我正在执行以下命令来显示与模式匹配的行。
查找 ./files/ -name "*.txt" -print0 | xargs -0 grep "5|20150507"
输出是
./files/N1.942_0000.txt:78787878|13|5|20150507221152 ./files/N1.942_0000.txt:78787878|13|5|20150507221156 ./files/N1.943_0002.txt:1221212 |13|5| 20150507222004 ./files/N1.810_0000.txt:8892716618|13|5|20150507215150 ./files/N1.442_0001.txt:8648648648|13|5|20150507221636 ./files/N1 .442_0001.txt:8648648648|13|5 |20150507221638 ./files/N1.442_0001.txt:7406079160|13|5|20150507221941
但我想要没有文件名的输出,如下所示。
78787878|13|5|20150507221152
78787878|13|5|20150507221156
1221212|13|5|20150507222004
8892716618|13|5|20150507215150 86486 48648|13|5|20150507221636
8648648648
|13|5|20150507221638
7406079160|13|5|20150507221941
答案1
grep
命令有-r
选项
它在目录中递归搜索文本
下面的例子:
grep -r "5|20150507" ./ | awk -F ':' {'print $2'}
答案2
使用带有选项“-h”的 grep 。
-h, --no-filename
Suppress the prefixing of file names on output. This is
the default when there is only one file (or only standard input) to
search.
查找 ./files/ -name "*.txt" -print0 | xargs -0 grep -h "5|20150507"
答案3
find ./files/ -name "*.txt" -print0 | xargs -0 grep "5|20150507" | awk 'BEGIN{FS=":"} {print $2}'
您可能必须使用分隔符“FS=”,因为它可能是一个特殊字符。