grep文字列セットを1行に

grep文字列セットを1行に

テキストファイルでこれを行うと

grep FINAL *.msg

それは戻ってくる

FINAL   COMPUTATIONS:  Elapsed Time: 000:30:55.65; CPU Time: 000:30:26.53  
FINAL   COMPUTATIONS:  Elapsed Time: 000:28:11.77; CPU Time: 000:27:41.36  

今 for ループを実行すると

for line in `grep FINAL *.msg`

"$line""FINAL COMPUTATIONS: Elapsed Time: 000:30:55.65; CPU Time: 000:30:26.53"1行として扱わないでください。

この問題をどのように解決できますか?

ベストアンサー1

DopeGhotiの言葉は絶対に正しいです。ここでより適切な内容があります。プロセス置換を使用してgrep出力から1行ずつ読み込みます(パターンは現在のディレクトリのすべての* .msgファイルに適用されます)。

i=0; 
while read -r line; do 
    echo $((i++)) "$line"; 
done < <(grep "FINAL" ./*.msg)

Shellcheck警告なしのコードスニペット :)

おすすめ記事