找到特定单词出现的行号“grep”

时间:2012-05-14 19:37:32

标签: unix sed grep

grep是否能够提供指定字出现的行号?

此外,是否可以使用grep搜索从某条特定行向下开始的单词?

3 个答案:

答案 0 :(得分:55)

使用grep -n获取匹配的行号。

我认为没有办法让grep开始某个行号。为此,使用sed。例如,要从第10行开始并打印行号以及匹配行的行,请使用:

sed -n '10,$ { /regex/ { =; p; } }' file

要获取行号,您可以使用

grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/'

或者你可以简单地使用sed:

sed -n '/regex/=' file

结合两个sed命令,你得到:

sed -n '10,$ { /regex/= }' file

答案 1 :(得分:3)

您可以致电tail +[line number] [file]并将其发送至显示行号的grep -n

tail +[line number] [file] | grep -n /regex/

此方法的唯一问题是grep -n报告的行号比[line number] - 1中的实际行号少[file]

答案 2 :(得分:2)

或者您可以使用

   grep -n . file1 |tail -LineNumberToStartWith|grep regEx

这将负责编号文件中的行

   grep -n . file1 

这将打印last-LineNumberToStartWith

   tail -LineNumberToStartWith

最后它会grep你想要的行(包括行号文件中的行号)

grep regEX