在目录中搜索字符串 - 获取不带文件名的输出

在目录中搜索字符串 - 获取不带文件名的输出

我正在执行以下命令来显示与模式匹配的行。

查找 ./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=”,因为它可能是一个特殊字符。

相关内容