0

awkの出力をfor file inループに渡すにはどうすればよいですか?

for file in awk '{print $2}' my_file; do echo $file done;

my_file名前が表示される (エコーされる) ファイルの名前が含まれます。

私はちょうど得る

>

通常のプロンプトの代わりに。

4

4 に答える 4

1

バッククォートまたは$(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制限なしでループで取得するのと同じ種類の操作を許可します。

于 2013-11-03T19:09:23.723 に答える