仅显示grep的第n个匹配项

And*_*say 27 bash grep pattern-matching match

onefish
onechicken
twofish
twochicken
twocows
threechicken
Run Code Online (Sandbox Code Playgroud)

如果我想grep包含"two"的行,但我只想要第二场比赛,该怎么办?所以我希望结果"twochicken".

Ken*_*ent 28

试试这个:

awk '/two/{i++}i==2' file
Run Code Online (Sandbox Code Playgroud)

与您的数据:

kent$  echo "onefish
onechicken
twofish
twochicken
twocows
threechicken"|awk '/two/{i++}i==2'
twochicken
Run Code Online (Sandbox Code Playgroud)

注意:如果您的文件很大,请执行以下操作:

awk '/two/{i++}i==2{print; exit}' file
Run Code Online (Sandbox Code Playgroud)


Joh*_*nck 20

grep -m2 "two" in-file.txt | tail -n1
Run Code Online (Sandbox Code Playgroud)

在第二场比赛后停止,然后打印第二行.

  • 尾部应该是:`tail -n1`。 (3认同)

Joy*_*Joy 8

grep 和 sed 可用于过滤行号。

测试文件

onefish
onechicken
twofish
twochicken
threechicken
twocows
Run Code Online (Sandbox Code Playgroud)

获取所需的行:

grep "two" testfile | sed -n 2p
prints "twochicken"

grep "two" testfile | sed -n 1p
prints "twofish"
Run Code Online (Sandbox Code Playgroud)


Lou*_*uis 5

要使用第 n_th 匹配的命令,我们可以使用和命令grep的组合,如下所示:headtail

grep two file.txt | head -n1 | tail -1
Run Code Online (Sandbox Code Playgroud)

n1我们需要的第 n_th 匹配项在哪里。