Bash 在awk中打印一列(如果匹配),如果不匹配,则仍打印该行(不带该列)
我试图用awk做一些过滤,但我目前遇到了一个问题。我可以让awk匹配正则表达式,并用列打印行,但我不能让它在没有列的情况下打印行Bash 在awk中打印一列(如果匹配),如果不匹配,则仍打印该行(不带该列),bash,shell,awk,Bash,Shell,Awk,我试图用awk做一些过滤,但我目前遇到了一个问题。我可以让awk匹配正则表达式,并用列打印行,但我不能让它在没有列的情况下打印行 awk-vofs='\t'$6~/^07/{print$3、$4、$5、$6}文件 这就是我现在拥有的。如果与正则表达式不匹配,我可以让awk打印没有第六列的行吗 如果正则表达式不匹配,则将$6设置为空字符串。就这么简单。这应该做到: awk -v OFS='\t' '{ if ($6 ~ /^07/) { print $3, $4, $5, $6 } else {
awk-vofs='\t'$6~/^07/{print$3、$4、$5、$6}文件
这就是我现在拥有的。如果与正则表达式不匹配,我可以让awk打印没有第六列的行吗 如果正则表达式不匹配,则将
$6
设置为空字符串。就这么简单。这应该做到:
awk -v OFS='\t' '{ if ($6 ~ /^07/) { print $3, $4, $5, $6 } else { $6 = ""; print $0; } }' file
请注意,$0
是整行,包括$2
(您似乎没有使用)。它将打印除第6列以外的每一列
如果您只想在不匹配时打印$3
、$4
和$5
,请改用此选项:
awk -v OFS='\t' '{ if ($6 ~ /^07/) print $3, $4, $5, $6; else print $3, $4, $5 }' file
不知道为什么我没有想到使用if语句。谢谢:)