我有兴趣在特定文件类型中查找字符串。 以下命令符合我的目的。
find /any/path -type f -name "*.log" | xargs grep -B2 -A2 'SUMMARY' {} \;
它提供以下输出:
--
/path/to/file.log-line1
/path/to/file.log-line2
/path/to/file.log:text SUMMARY text
/path/to/file.log-line1
/path/to/file.log-line2
--
我希望文件名不要添加到每一行。是否可以输出如下?
--
/path/to/file.log
line1
line2
text SUMMARY text
line1
line2
--
答案 0 :(得分:1)
如果你使用bash在linux下运行它,你可以使用这样的bash脚本:
#!/bin/bash
for fn in `grep --include \*.txt -lr 'SUMMARY' /any/path`; do
echo $fn
grep -A2 -B2 'SUMMARY' $fn
done
这将找到包含单词" SUMMARY"的所有文件。从目录" / any / path"开始以递归方式。然后按名称打印所有匹配的文件,并使用第二行grep
打印匹配的部分。