如果列匹配,则在匹配项前打印一行

时间:2019-05-15 14:51:17

标签: linux bash grep

我正在搜索文件中的区分大小写。

在第三列中,我要查找第一次出现的条目“ 0.000000”;然后打印该行以及之前的一行。为此,我编写了命令:

grep -m1 -B1 '0.000000'

但是此命令不会在所需的第三行中搜索匹配项。而是在任何位置找到匹配项并打印两行。例如,下面在第8列中找到匹配项。

enter image description here

1 个答案:

答案 0 :(得分:1)

grep不是正确的工具,如果可能,应使用awk。在以下示例中,将第三列与字符串0.000000进行比较并进行打印。请注意,{prev=$0}块将每行的前一行存储在prev变量中。 exit用于仅希望第一个比赛。

awk '$3=="0.000000"{print prev RS $0 ;exit}{prev=$0}' inputfile