在文本文件中查找行号 - 无需打开文件

时间:2012-10-05 16:22:34

标签: linux

在一个非常大的文件中,我需要找到一个字符串的位置(行号),然后在该字符串的上方和下方提取2行。

要立即执行此操作 - 我启动vi,找到字符串,记下它的行号,退出vi,然后使用sed提取该字符串周围的行。

有没有办法简化这个过程...理想情况下,根本不需要运行vi。

5 个答案:

答案 0 :(得分:9)

你可以做到

grep -C 2 yourSearch yourFile 

要将其发送到文件中,请执行

grep -C 2 yourSearch yourFile > result.txt

答案 1 :(得分:8)

也许像这样使用grep:

grep -n -2 your_searched_for_string  your_large_text_file

几乎可以满足您的期望

-n:告诉grep打印行号

-2:打印2行(当然是想要的字符串)

答案 2 :(得分:3)

使用grep -n string file查找行号,而无需打开文件。

答案 3 :(得分:2)

您可以使用cat -n显示行号,然后使用awk获取grep后的行号,以便提取行号:

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

虽然如果你grep {高于/低于2行),-C 2已经提到了你提到的内容:

grep -C 2 WORD FILE

答案 4 :(得分:1)

您可以使用grep -A-B选项执行此操作,如下所示:

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

grep将找到该行,并在之前和之后显示两行上下文,之后使用sed删除第三行。