我使用grep v2.5.1
并且我想在 grep 输出中为文件名着色。
我可以使用另一个带有模式的 grep 命令/[^/:]*\(:\|$\)
:
grep --color=always something */* | grep --color '/[^/:]*\(:\|$\)'
同样的模式也适用于列出文件:
grep --color=always something */* -l | grep --color '/[^/:]*\(:\|$\)'
但我更喜欢命令,sed
我不知道如何翻译:-(\(:\|$\)
sed
例如:
echo 'dir/file: xxxx' | sed 's|/\([^/:]*\)(:|$)|/\o033[1;35m\1\o033[0m\2|'
仅供参考,我的完整功能~/.bashrc
gg() {
find . -name .svn -prune -o -type f '(' -name '*.java' -o -name '*.h' -o -name '*.cpp' -o -name 'Make*' -o -name '*.sh' ')' -print0 |
xargs -0 grep --color=always "$@" |
sed 's|/\([^/:]*\)(:|$)|/\o033[1;35m\1\o033[0m\2|'
}