7

私はgrepを頻繁に使用し、一致する行(デフォルトで)と一致しない行(-vパラメーターを使用)を返す機能に精通しています。ただし、ファイルを一度grepして、一致する行と一致しない行を分離できるようにしたいと考えています。

これが不可能な場合は、お知らせください。これは perl や awk で簡単にできると思いますが、grep でできるかどうか知りたいです。

ありがとう!

4

3 に答える 3

9

grep である必要がない場合 - これはパターンに基づく単一パスの分割です -- パターンが見つかりました > file1 パターンが見つかりません > file2

awk '/pattern/ {print $0 > "file1"; next}{print $0 > "file2"}' inputfile
于 2013-04-03T15:28:39.560 に答える
1

私はまったく同じ問題を抱えていたので、そのための小さな Perl スクリプトを書きました [1]。1 つの引数のみを受け入れます: regexto grep入力 on です。

[1] https://gist.github.com/tonejito/c9c0bffd75d8c81483f9107c609439e1

STDINを行ごとに読み取り、指定された行とregex照合します。一致した行はSTDOUTに移動し、一致しない行はSTDERRに移動します。

このツールはパイプラインの途中にあり、シェルのリダイレクトを使用してファイルを最終的な場所に保存するため、このようにしました。

于 2018-04-23T21:25:27.450 に答える