0

grep v2.5.1はgrep出力内のファイル名を色付けしたいと思っています。

pattern で別の 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|'
}
4

1 に答える 1

1

他のいくつかの可能性を試した後、私は最終的に見つけました:パターンはこの目的のパターン
grepと同じですsed

そして、私の完全な機能は次のとおりです。

gg ()
{
   find . -path '*/.svn' -prune -o -type f '(' -name '*.java' -o -name '*.h' -o -name '*.hpp' -o -name '*.hxx' -o -name '*.cpp' -o -name '*.cxx' -o -name '*.c' -o -name '[Mm]akefi*[^~]' -o -name '*.sh' -o -iname '*.xml' ')' -exec grep --color=always "$@" '{}' '+' | 
   sed -u 's_\(/\|^\)\([^/:]*\)\(:\|$\)_\1\o033[1;37m\2\o033[0m\3_'
}

私はまだコメント、提案、改善、貢献を受け付けています...
乾杯;-)

于 2012-09-24T07:49:03.070 に答える