Unix - 按顺序打印grep输出

时间:2013-05-05 16:45:53

标签: linux unix grep output

我正在使用这个结构:

VAR=$(grep -r -i --color=always --exclude=\*.{sh,pdf,doc,docx} "$WORD" "$DIRECTORY")

这给了我一个这样的输出:

/dir1NameWithSpaces/File1_05012004/file6.sml:file6 content .... with words and symbols
/dir1NameWithSpaces/File1_05012004/fil3.txt:file3 content .... with words and symbols
/dir1NameWithSpaces/File1_04092008/file.txt:file content .... with words and symbols

我需要提取每一行(例如使用循环)并且仅在1行上从grep获取文件名,并在另一行上打印grep命令的内容。

每次我在多文件内容中进行搜索时,它必须是通用的。

此外,如果你想直接使用grep,那么带内容的行不必有文件名,所以我只想留下“:”符号。

这里要清楚的是一个例子:

/dir1NameWithSpaces/File1_05012004/file6.sml:
:file6 content .... with words and symbols
/dir1NameWithSpaces/File1_05012004/fil3.txt:
file3 content .... with words and symbols
/dir1NameWithSpaces/File1_04092008/file.txt:
file content .... with words and symbols

换句话说,我的grep的输出必须被打印出来。

由于

1 个答案:

答案 0 :(得分:3)

$ echo foo | tee bar.txt baz.txt qux.txt
foo

$ grep -r foo . | sed 'y/:/\n/'
./bar.txt
foo
./baz.txt
foo
./qux.txt
foo