我尝试使用awk进行一些过滤,但我目前遇到了一个问题。我可以使awk与正则表达式匹配并使用列打印该行,但是我无法在没有列的情况下打印该行。
awk -v OFS='\t' '$6 ~ /^07/ {print $3, $4, $5, $6}' file
目前我拥有的是什么。如果它与正则表达式不匹配,我可以使用awk打印没有第六列的行吗?
答案 0 :(得分:3)
如果正则表达式不匹配,请将$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