web-dev-qa-db-ja.com

grep(行の長さで結果をフィルタリング)を使用するときに行の長さの制限を設定するにはどうすればよいですか?

ユースケースは、HTML/CSS/JSファイル(サブディレクトリを含む)のディレクトリで特定のCSS属性を検索している場合です。一部のワンライナーJSライブラリにも、私が探しているCSS属性があります。

それで、定義した$ max_line_lengthより長い行に結果を出してはならないことをgrepに伝える方法はありますか?

ありがとうございました!

8
Howard

最初のアプローチでは、そもそもワンライナーJSファイルがgrepさ​​れないようにしてください。多くの場合、これらの名前はsome-library.min.jsのようになるため、次のようなことができます。

$ grep --exclude '*.min.js' ...

もう1つのアプローチは、CSSファイルに含まれることがわかっている場合は、 ack を使用して検索をCSSファイルに制限する(そしてさまざまなVCSの問題を無視する)ことができます。

$ ack --type=css ...

ただし、質問に答えるために、行の長さに一致する正規表現を作成できます。以下は、100文字以下の任意の行に一致します。

$ grep -E '^.{,100}$'
12
flowblok

私はcutをパイプでつなぎ、AMD invert match-vの行を切り取って除外することを好みます。私には読みやすい。パフォーマンスは賢明ではないと思います

grep -r something . | cut -b 1-99 | grep -v min.js
0
varta