join
とても便利だと思います。これにより、キーフィールドでfile1とfile2を組み合わせることができます。
コマンドの結果に応じてこれを動的に実行することは可能ですか?たとえば、次のようになります。
join -1 1 -2 1 file1 'curl http://example.com?code=$1&fmt=csv'
おそらくxargsまたは名前付きパイプを使用できますか?
理想的には、file1の各レコード/行に対して「検索」を実行します。
ベストアンサー1
はい、シェルがプロセス置換をサポートしている場合(bash
そしてksh93
実際にはそうです)、次のことができます。
$ join file1 <( yourcommand )
これにより、コマンドが実行され、join
標準出力に関連付けられたファイル記述子が使用されますfile1
。/dev/fd
yourcommand
curl
join
すべての入力は整列する必要があります。ソートされた入力ストリームは一度だけ解析できる必要があります。特に入力をソートする必要がありますsort -b
(先行スペースは無視されます)。
そうでない場合は、次のことができます。
$ join <( sort -b file1 ) <( yourcommand | sort -b )