42

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

另外,是否可以grep用于从某行向下搜索单词?

4

3 回答 3

61

用于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
于 2012-05-14T19:38:19.610 回答
3

您可以调用tail +[line number] [file]并通过管道grep -n显示行号:

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

此方法的唯一问题是报告的行号grep -n[line number] - 1小于[file].

于 2012-05-14T20:00:34.643 回答
2

或者您可以使用

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

这将负责对文件中的行进行编号

   grep -n . file1 

这将打印 last-LineNumberToStartWith

   tail -LineNumberToStartWith

最后它将 grep 您想要的行(其中将包括原始文件中的行号)

grep regEX
于 2012-05-15T00:23:47.670 回答