2012-10-05 41 views
3

在一個非常大的文件中,我需要找到字符串的位置(行號),然後提取該字符串上方和下方的2行。在文本文件中查找行號 - 無需打開文件

要做到這一點 - 我啓動vi,找到字符串,記下它的行號,退出vi,然後使用sed來提取字符串周圍的行。

有沒有一種方法來簡化這個過程......理想情況下,不必運行vi。

回答

6

你可以做

grep -C 2 yourSearch yourFile 

要在發送文件,這樣做

grep -C 2 yourSearch yourFile > result.txt 
+3

這與'-n'是最簡潔的。 – InternetSeriousBusiness

2

可以以提取行號grep後使用cat -n顯示的行號,然後使用awk獲得的行號:

cat -n FILE | grep WORD | awk '{print $1;}' 

雖然grep已經這樣做了,你提什麼,如果你給-C 2 (高於/低於2行):

grep -C 2 WORD FILE 
3

使用grep -n string file找到行號,而無需打開該文件。

6

也許用grep這樣的:

grep -n -2 your_searched_for_string your_large_text_file 

會給你你期待什麼幾乎

-n:告訴grep來打印行數

-2:打印2條額外的線路(當然)

1

您可以使用grep -A-B選擇這樣做,是這樣的:

grep -B 2 -A 2 "searchstring" | sed 3d 

的grep會發現行,並顯示兩行上下文前後,後來用sed刪除第三個。