grepマッチに基づいてファイルを分割する

grepマッチに基づいてファイルを分割する

ファイルを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

を使用しteebashプロセスの交換input_fileディスクから一度だけ読み取る必要があります。これpee注文する同じことができます:

pee 'grep -F -f regexp_file    >./positive_match' \
    'grep -F -f regexp_file -v >./negative_match' < input_file

おすすめ記事