Sed匹配多个文件,显示匹配文件名和行号

时间:2016-02-25 04:35:55

标签: bash perl awk sed cygwin

这是Multiple line, repeated occurence matching

的延续

我有很多test * .txt文件,其内容与前一个帖子一样。

test1.txt的

blah blah..
blah blah..
blah abc blah1
blah blah..
blah blah..
blah abc blah2
blah blah..
blah efg1 blah blah
blah efg2 blah blah
blah blah..
blah blah..

blah abc blah3
blah blah..
blah blah..
blah abc blah4
blah blah..
blah blah blah

blah abc blah5
blah blah..
blah blah..
blah abc blah6
blah blah..
blah efg3 blah blah

blah efg4 blah blah
blah abc blah7
blah blah..
blah blah..
blah abc blah8
blah blah..

现在我想修改输出以对所有文件运行sed命令,但是还要使用sed命令的输出显示文件名和行号(如果可能)...

我在命令

下面运行
ls test*.txt | xargs sed -n -f findMatch.txt

findMatch.txt内容

/abc/h;/efg/!b;x;/abc/p;z;x

输出

blah abc blah2
blah abc blah6
blah abc blah2
blah abc blah6
blah abc blah2
blah abc blah6

我需要更详细的输出,如下所示

test1.txt ln6 blah abc blah2
test1.txt ln23 blah abc blah6
test2.txt ln6 blah abc blah2
test2.txt ln23 blah abc blah6
test3.txt ln6 blah abc blah2
test3.txt ln23 blah abc blah6

1 个答案:

答案 0 :(得分:1)

grep命令用于将特定模式搜索到所有文件。

  grep -f patten_file -Rn *.txt

-R递归

-n行号

Patten_file
hai
hello
this

<强>输出:

1.txt:1:hai
1.txt:2:hello
2.txt:1:hai
2.txt:2:this