コマンドに「参加」できますか?

コマンドに「参加」できますか?

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/fdyourcommandcurl

joinすべての入力は整列する必要があります。ソートされた入力ストリームは一度だけ解析できる必要があります。特に入力をソートする必要がありますsort -b(先行スペースは無視されます)。

そうでない場合は、次のことができます。

$ join <( sort -b file1 ) <( yourcommand | sort -b )

おすすめ記事