【发布时间】:2014-03-13 19:28:50
【问题描述】:
我需要使用 grep 获取匹配列表,包括文件名和行号,但没有匹配字符串
我知道grep -Hl 只会给出文件名,grep -Hno 只会给出匹配字符串的文件名。但那些对我来说并不理想。我需要得到一个没有匹配但有行号的列表。对于这个grep -Hln 不起作用。我试过grep -Hn 'pattern' | cut -d " " -f 1 但它没有正确地剪切文件名和行。
【问题讨论】:
我需要使用 grep 获取匹配列表,包括文件名和行号,但没有匹配字符串
我知道grep -Hl 只会给出文件名,grep -Hno 只会给出匹配字符串的文件名。但那些对我来说并不理想。我需要得到一个没有匹配但有行号的列表。对于这个grep -Hln 不起作用。我试过grep -Hn 'pattern' | cut -d " " -f 1 但它没有正确地剪切文件名和行。
【问题讨论】:
awk 可以在单个命令中做到这一点:
awk '/pattern/ {print FILENAME ":" NR}' *.txt
【讨论】:
你用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
【讨论】:
试试
grep -RHn Studio 'pattern' | awk -F: '{print $1 , ":", $2}'
【讨论】:
我猜你想要这个,只是行号:
grep -nh PATTERN /path/to/file | cut -d: -f1
示例输出:
12
23
234
...
很遗憾,您需要在此处使用cut。纯grep是没有办法的。
【讨论】: