awk
の出力をfor file in
ループに渡すにはどうすればよいですか?
for file in awk '{print $2}' my_file; do echo $file done;
my_file
名前が表示される (エコーされる) ファイルの名前が含まれます。
私はちょうど得る
>
通常のプロンプトの代わりに。
バッククォートまたは$(awk ...)
コマンド置換を使用することは、ファイルの数が少ない場合に受け入れられる解決策です。ただし、単一のコマンドまたはパイプには xargs を使用するか、while read ...
より複雑なタスクには simple を使用することを検討してください (ただし、単純なものでも機能します)。
awk '...' |while read FILENAME; do
#do work with each file here using $FILENAME
done
これにより、 awk スクリプト全体が完了するのを待つ代わりに、各ファイル名が処理されるときに処理を実行でき、より大きなファイル名のセットを許可できます ( a に非常に多くの引数しか指定できませんfor x in ...; do
)。これにより、通常、スクリプトが高速化されます。for in
制限なしでループで取得するのと同じ種類の操作を許可します。