shell脚本查找第n个字符串的出现并打印行号

时间:2016-12-15 11:14:36

标签: linux shell unix awk

我有一个名为hello的文件,其中包含以下数据

onefish
onechicken
twofish
twochicken
threechicken
twocows

我想获得第二次发生chicken的行号。

输出应为"4",因为chicken在第4行第二次出现。

4 个答案:

答案 0 :(得分:2)

您可以使用awk:

awk '/chicken/{++n; if (n==2) { print NR; exit}}' file

4

答案 1 :(得分:1)

grep -n chicken hello| sed -n '2 s/:.*//p'

答案 2 :(得分:0)

为了好玩,使用模式作为separtor并依靠字段

awk -F 'chicken' 'NF>1{if (2==++o)print NR}' YourFile

使用sed(不适合与awk比较)[^J是CTRL + V + J,真正的新行]

sed -e '/chicken/H;g;s/\(\^J.*\)\{2\}//;t h' -e 'd' -e ':h' -e ' =;q' YourFile

答案 3 :(得分:0)

更短

$ awk '/chicken/ && ++n==2 {print NR}' file

如果输入文件很长,打印后添加exit将停止处理。