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/63
cat <(echo foo)
foo