ファイルを2つのファイルに分割するには?あるファイルにはパターンと一致する行が含まれ、他のファイルにはパターンと一致しない行が含まれていますか?他のファイルで一致させるパターンを指定したいと思います。この行は相互に排他的です。つまり、あるカテゴリに属する行は別のカテゴリに属することはできません。別々に2回行うことができますが、grep
ファイルを1回だけ繰り返したいと思います。
私が今やっていることは次のとおりです。
grep -F -f regexp_file input_file>./positive_match
grep -F -f -v regexp_file input_file>./negative_match
答え1
問題は、部分入力(ディスクから入力ファイルを一度だけ読み取る)と部分処理(ファイルを一度だけ繰り返す)にあります。
1つのストリームとしてのみ出力できるため、1つgrep
のインスタンスのみを使用してジョブの繰り返し部分を完了することはできませんgrep
。
ジョブの入力部分が改善される可能性があります。
tee >(grep -F -f regexp_file >./positive_match) < input_file | \
grep -F -f regexp_file -v >./negative_match
を使用しtee
てbash
プロセスの交換、input_file
ディスクから一度だけ読み取る必要があります。これpee
注文する同じことができます:
pee 'grep -F -f regexp_file >./positive_match' \
'grep -F -f regexp_file -v >./negative_match' < input_file