2012-10-05 76 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删除第三个。