スクリプトでgrepの出力をどのように安全に使用できますか?

スクリプトでgrepの出力をどのように安全に使用できますか?

スクリプトでいくつかのテキストを含むファイルを見つけたいです。テキスト付きファイルとテキスト付きファイルの完全な行を知る必要があります。grepこれを行うユーティリティですが、可能であれば出力を:ファイル名から利用可能な形式に変換するにはどうすればよいですか?コマンドでよく使うように使用できる--porcelainパターンはありますか?grepgit

test-num:1:date:jan-2例:grepしたいファイルでいっぱいのフォルダがあります。このファイルには、FAILURE:<some reason>またはSUCCESS:<some reason>(何よりも)が含まれています。特定の原因を検索して後で処理するには、ファイル名と原因(テキスト全体の行が可能)を格納するスクリプトが必要です。出力は、コードを実行できる限り、任意の種類のデータ構造にすることができます。

ベストアンサー1

grep --porcelainUNIXでは、ファイル名の特殊文字を処理することは必ずしも後で考慮されるわけではありません。次のように試してみることができますが、効率が低下します。

pattern='some pattern'
for file in ./*; do
    grep -- "$pattern" "$file" | while read -r line; do
        printf 'file: %s, line: %s\n' "$file" "$line"
    done
done

おすすめ記事