regex - 在 grep 中抑制匹配本身

标签 regex 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救援:

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

此处特定的 sed 命令从其输入的第 2 行开始,每隔一行打印一次。将 grep 的输出通过管道传输到其中,您将只能从 grep 输出中获得偶数行。

sed 命令本身的解释:
2,$ - 从第 2 行到文件最后一行的行范围
{p;n;} - p打印当前行,然后 ig n矿石下一行(然后重复)

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

关于regex - 在 grep 中抑制匹配本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165254/

相关文章:

linux - grep 在表达式中不使用 0

regex - Linux 上的 Sed 命令只匹配 1 个,而在 Solaris 上会找到多个匹配项

python - 比较正则表达式与递归

php - 为什么首先 php echo indent(tab)?

regex - Lua文本解析、空格处理

regex - 使用 Grep 和 Regex 生成一个文本文件,其中列出了其中包含特定字符串的所有文件

bash - grep 后 grep : No such file or directory

javascript - 如何停止在没有换行符的字符串中进行正则表达式捕获但仍全局捕获?

linux - 如何搜索网站内容并将其存储在 Excel 中?

regex - 如何用awk拆分单列的输出?