2012-07-20 40 views
1

我想爲某些文本grep文件,並只輸出它出現的行號。例如:使用grep bash打印出現文本的行

File.text:

firstsentance 
secondsentance 
thirdsentance 

,如果我用grep的secondsentance我應該得到的2

+0

都應該在自己的行,而不是在同一行。 – user1371011 2012-07-20 21:40:30

回答

3

輸出我不認爲grep本身具有這樣的功能,但你可以寫:

grep -n secondsentance File.text | sed 's/:.*//' 

去除從:以上的所有內容。

請注意,這將不具有單獨的grep相同的退出碼。

+1

我的答案非常相似,但使用'cut',如:'... | cut -d:-f1',所以** + 1 ** – Birei 2012-07-20 21:44:43

6

這會做你想要什麼:

sed -n '/secondsentence/=' File.text 

的Perl:

perl -lne 'print $. if /secondsentence/' File.text 
+0

我喜歡這個,因爲選項'='沒有被廣泛使用,除了避免使用管道,** + 1 ** – Birei 2012-07-20 21:54:23

+0

好的答案。我還想提一提,如果只想要第一場比賽,那麼在比賽結束後你可以退出。 'sed -n'/ secondsentence/{=; q}' – 2012-07-20 22:18:57

1

而且一個awk的解決方案。

awk '/secondsentance/ { print NR }' file 
2


嘗試學習AWK:

awk '/secondsentance/ { print NR }' file.text 
每個在file.text話