コマンドライン引数の一部として2つのファイルを結合する

コマンドライン引数の一部として2つのファイルを結合する

csvgrep(csvkitの一部)を使用して、2つのファイルのいずれかに一致する行を抽出しようとしています。残念ながら、grepのように2つの一致するファイルを許可するコマンドラインオプションはありません。ただ、

csvgrep -f list1.txt -c 2 myfile.csv

コマンドの一部としてlist1.txtをlist2.txtに関連付ける方法はありますか?

csvgrep -f (list1.txt+list2.txt) -c 2 myfile.csv

私が考えることができる唯一の方法は一時的な中間ファイルを使用することですが、可能であればそうしない方が良いです。

ベストアンサー1

読み込み時に、両方のファイルの内容を提供する「ファイル名」をコマンドで確認し、置換を処理し、目的のcat内容を指定するとします。

csvgrep -f <(cat list1.txt list2.txt) -c 2 myfile.csv

デフォルトでは、プロセスの置き換えは、内部的にコマンドを実行し、その出力が通常のファイルのように開くことができるマジックファイルを介して提供されるように準備する汎用パイプです。拡張子自体はマジックファイルの名前に拡張されます。 (つまり、、printなどecho <(echo foo)のものを印刷します。)/dev/fd/63cat <(echo foo)foo

おすすめ記事