在文件中搜索字符串并报告四行上下文(匹配和后续三行)

在文件中搜索字符串并报告四行上下文(匹配和后续三行)

我有一个字符串(或字符串列表),要在目录的所有文件中搜索。例如,如果我正在搜索 ABC,并且file1.txt第 6 行包含 ABC,那么我需要该文件中的第 6、7、8 和 9 行。我希望所有此类输出都转到新的输出文件。

答案1

也许这很适合。使用grep -A(after-context) 选项来输出匹配行和 3 个后续行。

find . -name file\* -exec grep -A 3 ABC {} \; > result-filename

笔记:你不应该放置result-filenamedirectoryname. (看:grep:输入文件“X”也是输出)。

覆盖多种模式:

find . -name file\* -exec egrep -A 3 'ABC|XYZ' {} \; > result-filename

或者文件中的多个模式(感谢 Evgeny Vereshchagin):

find . -name file\* -exec grep -A 3 -f patterns.txt {} \; > result-filename

答案2

以下将搜索当前目录中的所有非点文件:

sed '/string/{
        $!N;$!N;$!N;$!N
        w ./new_out_file
     }' ./*

做多个-F固定-stringgrep -A与不带和不带每个匹配前面的文件名的匹配find,您首先需要一个流。

cat ./* | grep -A2 -Ff pattern_file >outfile

答案3

我得到了解决方案:

grep -A 2 -f 'INPUT.txt' *.* >> RESULT.txt

相关内容