Bash grep输出文件名和行号没有匹配

时间:2014-02-14 12:22:36

标签: linux bash shell grep cut

我需要获得与grep匹配的列表,包括文件名和行号但没有匹配字符串

我知道grep -Hl只会提供文件名,而grep -Hno会给只有匹配字符串的文件名。但那些不适合我的人。我需要获得一个没有匹配的列表但是没有行。对于此grep -Hln不起作用。我尝试使用grep -Hn 'pattern' | cut -d " " -f 1但它没有剪切文件名并且没有正确排列。

4 个答案:

答案 0 :(得分:3)

awk可以在单个命令中执行此操作:

awk '/pattern/ {print FILENAME ":" NR}' *.txt

答案 1 :(得分:2)

您只需要cut字段分隔符就可以很好地指出:。另外,我认为你需要第一组和第二组。因此,使用:

grep -Hn 'pattern' files* | cut -d: -f1,2

示例

$ grep -Hn a a*
a:3:are
a:10:bar
a:11:that
a23:1:hiya

$ grep -Hn a a* | cut -d: -f1,2
a:3
a:10
a:11
a23:1

答案 2 :(得分:0)

我想你想要这个,只是行号:

grep -nh PATTERN /path/to/file | cut -d: -f1

示例输出:

12
23
234
...

很遗憾,您需要在此处使用cut。使用纯grep无法做到这一点。

答案 3 :(得分:0)

尝试

grep -RHn Studio 'pattern' | awk -F: '{print $1 , ":",  $2}'