grepで出力されたファイル名の後にスペースを追加するには?

grepで出力されたファイル名の後にスペースを追加するには?

私はgrepファイル内で一致するパターンを検索し、出力からファイル名をコピーするために使用します。この作業をあまりにも頻繁にしてみると結局:コピーもするようになりそうです。それでは、最初に一致する半列またはファイル名が終わる前に2つのスペースを追加できますか?

$ grep -Hrn -e "zorro" --color=always --exclude-dir=dir -I -F . | \
    cut -c 11- | awk '$0="\033[33;35m"$0' | tr -s '[:space:]'
doo.tex:1:zorro alper alper alper skfjsdlkfj dslfj dslkj

希望の出力:

doo.tex  :1:zorro alper alper alper skfjsdlkfj dslfj dslkj
        ^
  <two space added>

ベストアンサー1

それでも私の最初は行きました

awk -F: -vOFS=: '{$1 = $1 "  "; print}'

しかし、私はそれが必要以上に物事が多いと思います。分裂して隊列に再加入することです。

これ選択肢はとてもきれいです

sed 's/:/  :/'

変える最初スペース2つとコロンがあるコロンです。


コロンの会話を含むファイル名関連:

GNU grep のマニュアルページをお読みください。-Zオプションの使用:「通常、ファイル名の後に続く文字の代わりに0バイト(ASCII NUL文字)を出力します。」

だから:

# .......v
grep -HrnZ -e "zorro" --color=always --exclude-dir=dir -I -F . | \
  perl -pe 's/\0/  :/'

おすすめ記事