仅输出匹配字符串之间的特定列

时间:2019-12-23 21:33:45

标签: awk seq

输入:

#word1  #word2  #word3  #word4
1.00     2.00    3.00    4.00
#end
#word1  #word3  #word4
11.00    13.00   14.00
#end
#word1  #word2  #word3  #word4
21.00    22.00   23.00   24.00
#end
#word1  #word3  #word4
31.00    33.00   34.00
#end

输出:

#word1  #word3  #word4
1.00     3.00    4.00
#end
#word1  #word3  #word4
11.00    13.00   14.00
#end
#word1  #word3  #word4
21.00    23.00   24.00
#end
#word1  #word3  #word4
31.00    33.00   34.00
#end

我想做的是打印出匹配字符串之间的某些行。如果都相同,我可以这样做,但是在输入中有时会有两列,有时有四列。如何从输入中获得输出?

1 个答案:

答案 0 :(得分:1)

如果该行有四列,如果要忽略column2,则可以使用

awk 'NF==4{ print $1,$3,$4; next }{ print }' input.txt

或更短

awk 'NF==4{ print $1,$3,$4; next }1' input.txt

如果该行有四列,则打印第1、3和4列,否则打印整行。

相关问题