1. ホーム
  2. bash

[解決済み] ループ内の各出力行を処理する方法は?

2022-04-22 07:27:38

質問

を実行した後、ファイルから取得した行数があります。 グレップ コマンドを次のように実行します。

var=`grep xyz abc.txt`

結果的にxyzからなる10行が得られたとしましょう。

ここで、grepコマンドの結果として得られた各行を処理する必要があります。どのように処理すればよいのでしょうか?

どのように解決するのですか?

簡単な方法としては、出力を変数に格納せず、while/readループで直接反復処理することです。

のようなものです。

grep xyz abc.txt | while read -r line ; do
    echo "Processing $line"
    # your code goes here
done

このスキームには、何を求めるかによってバリエーションがあります。

ループの内部で変数を変更する必要がある場合(そしてその変更をループの外部で確認できるようにする)、以下のようにプロセス置換を使用することができます。 fedorquiさんの回答 :

while read -r line ; do
    echo "Processing $line"
    # your code goes here
done < <(grep xyz abc.txt)