流编辑器的替换输出中的输入文件名?

时间:2014-06-23 14:13:02

标签: regex bash sed

我有一个要传递给sed的文件列表:

echo abc > test0; echo cab > test1; echo xyz > test2

我需要在sed的输出中有一个小组捕​​获文件名

$ cat test0 test1 test2 | sed -E 's/(\b[abc]+\b)/found \1 in file \?/'
found abc in file ?
found cab in file ?
xyz

将问号替换为相应的文件名。甚至可能吗?如果是,如何:D

提前致谢

编辑:我知道我可以通过简单的

来实现
grep -E '(\b[abc]+\b)' test0 test1 test2

但我真的需要自己的输出来生成另一种语言的代码

1 个答案:

答案 0 :(得分:2)

我会使用一个循环。您可以将此与bash一起使用:

for i in test0 test1 test2; do 
    sed -E "s/(\b[abc]+\b)/found \1 in file $i/" "$i"
done