2012-05-14 34 views
29

grep是否能夠提供指定單詞出現的行號?查找具有「grep」的特定單詞的行號

另外,是否可以使用grep來搜索從某個特定行開始向下的單詞?

+1

我相信這會更適合[超級用戶](http://superuser.com/)。 – 2012-05-15 00:28:51

+4

@dunsmoreb我不同意。 'grep'和高級用戶工具一樣是程序員的工具。 –

+0

我一直使用'grep'。但這真的不是一個與編程有關的問題。 – 2012-05-15 00:58:46

回答

44

使用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 
+0

好吧,所以grep -n會返回包含單詞和行號的行。無論如何只能得到行號嗎? –

+0

@OneTwoThree查看我的編輯。 –

+0

@OneTwoThree這是否適合你? –

3

你可以調用tail +[line number] [file]並管grep -n其中顯示了行號:

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

用這種方法唯一的問題是grep -n報告的行號會比實際的行數[line number] - 1少在[file]

1

或者您可以使用

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

這將帶編號的文件中的行

grep -n . file1 

照顧這將打印最後LineNumberToStartWith

tail -LineNumberToStartWith 

最後它將grep你想要的行(這將包括行號在orignal文件中)

grep regEX