2015-06-05 58 views
1

我怎样才能显示我的grep命令的结果,增量数字在他们之前
我不是在说使用-n或-nr来显示我的字符串位于那些文件的位置。

我说的是这样的:使用grep显示结果的行号

grep foo *.* 

结果应该是这样的:

-file12.txt:      ....富... ...
-file52.txt:     ... foo .....
-file87.txt:      .... foo ...

感谢

+0

Grep不会自己做,但你可以写一个脚本。 –

回答

4

运行它通过nl,专用的 “行数” 工具:

grep foo * | nl 

这显然适用于所有的命令,而不是仅仅grep

+0

'cat -n'也可以工作 –

+0

cat -n似乎受到广泛支持(GNU,FreeBSD,OpenBSD,Solaris),但它并不在Busybox或POSIX中。 –

0

这AWK可以在单个命令处理:

awk '/foo/{printf "%d-%s:\t%s\n", (++i), FILENAME, $0}' *.* 
+0

谢谢你的回复,但我真的不太关心数字和结果之间的' - '。 :) 谢谢 –

+0

哦'''只是为了格式化,对于这个命令并不重要。 – anubhava

0

这可能是矫枉过正,但你至少可以尝试一下:

n=0 
for item in $(grep foo *) 
do 
    n=$((n+1)) 
    echo "$n-$item" 
done 

在一个行:

n=0;for item in $(grep foo *); do n=$((n+1)); echo "$n-$item"; done 
+2

除非设置IFS = $'\ n'' - IFS = read -r line,否则不要使用'for'循环遍历**行**。做回声“$((++ n)) - $ line”;完成' –

+0

谢谢你的回复,但我真的不在乎数字和结果之间的' - '。 :) 谢谢 –