grep の結果から長い行を除外する

grep の結果から長い行を除外する

grep結果から非常に長い行を除外するにはどうすればよいですか?

私はよくたくさんの .js ファイル ( -r) を grep で検索しますが、その一部はコンパイル済みなので、通常は数千文字の 1 行で構成されています。その混乱のせいで、残りのファイルの結果を見るのは困難です。

grepたとえば、1000 文字を超える行を除外するには、何を渡す必要がありますか?

結果を別の grep にパイプする必要がない方が望ましいです。そうしないと、出力から色が失われ、色を取り戻すためにパイプの最後に最初の grep を再度追加する必要がなくなります。

答え1

を何かにパイプしてgrepも、必ずしも色が削除されるわけではありません。 この動作は から生じます--color=auto(確認すると、alias grepおそらく使用しているものでしょう)。 これをオーバーライドして を渡すと--color=alwaysgrepパイプを介しても色が保持されます。

行を除外する限り、好きなツールにパイプすることができます (例: cutAmazed が述べたように)。grep の色によって、一致した行に余分なバイトが挿入されることに留意してください (それが問題になる場合)。同じ呼び出しでそれを実行する明白な方法は (少なくとも私には) ありませんgrep

答え2

次のコマンドは、長さが 1000 文字を超える一致する行を出力しないという目的を達成します。

grep -r --color=always $pattern . | cut -c1-1000

この--color=alwaysフラグは、grep によってカラー エスケープ シーケンスが生成されるようにします。

このオプションのデフォルト値は で--color=auto、grep は対話型端末に渡される場合にのみ出力を色付けし、別のコマンドにパイプされるときは色を使用しません。

ソース:https://unix.stackexchange.com/a/113507/48906

関連情報