grep
結果から非常に長い行を除外するにはどうすればよいですか?
私はよくたくさんの .js ファイル ( -r
) を grep で検索しますが、その一部はコンパイル済みなので、通常は数千文字の 1 行で構成されています。その混乱のせいで、残りのファイルの結果を見るのは困難です。
grep
たとえば、1000 文字を超える行を除外するには、何を渡す必要がありますか?
結果を別の grep にパイプする必要がない方が望ましいです。そうしないと、出力から色が失われ、色を取り戻すためにパイプの最後に最初の grep を再度追加する必要がなくなります。
答え1
を何かにパイプしてgrep
も、必ずしも色が削除されるわけではありません。 この動作は から生じます--color=auto
(確認すると、alias grep
おそらく使用しているものでしょう)。 これをオーバーライドして を渡すと--color=always
、grep
パイプを介しても色が保持されます。
行を除外する限り、好きなツールにパイプすることができます (例: cut
Amazed が述べたように)。grep の色によって、一致した行に余分なバイトが挿入されることに留意してください (それが問題になる場合)。同じ呼び出しでそれを実行する明白な方法は (少なくとも私には) ありませんgrep
。
答え2
次のコマンドは、長さが 1000 文字を超える一致する行を出力しないという目的を達成します。
grep -r --color=always $pattern . | cut -c1-1000
この--color=always
フラグは、grep によってカラー エスケープ シーケンスが生成されるようにします。
このオプションのデフォルト値は で--color=auto
、grep は対話型端末に渡される場合にのみ出力を色付けし、別のコマンドにパイプされるときは色を使用しません。