正则表达式 – 在grep中抑制匹配本身

假设我有很多文件的形式

First Line Name
Second Line Surname Adress
Third Line etc
etc

现在我使用grep来匹配第一行.但我这样做实际上是为了找到第二行.第二行不是可以匹配的模式(它只取决于第一行).我的正则表达式模式工作,我正在使用的命令是

grep -rHIin pattern . -A 1 -m 1

现在-A选项在匹配后打印该行. -m选项在1次匹配后停止(因为有其他行匹配我的模式,但我只对第一次匹配感兴趣,无论如何……)

这实际上有效,但输出是这样的:

./example_file:1:        First Line Name
./example_file-2-        Second Line Surname Adress

我已阅读手册但无法提供任何线索或有关该信息的信息.现在问题就在这里.

我怎样才能压制比赛本身?输出应采用以下形式:

./example_file-2-        Second Line Surname Adress

最佳答案 救援:

sed -n '2,${p;n;}'

这里特定的sed命令从其输入的第2行开始,并打印每隔一行.将grep的输出传递给它,你只能从grep输出中得到偶数行.

sed命令本身的解释:

2,$ – 从第2行到文件最后一行的行范围

{p; n;} – 打印当前行,然后忽略下一行(然后再重复)

(在所有偶数行的特殊情况下,另一种写入的方法是sed -n’n; p;’因为我们实际上不需要特殊情况下任何前导行.如果你想跳过前5行文件的行,这是不可能的,你必须使用6,$语法.)

点赞