Як встановити обмеження довжини рядка при використанні grep (фільтр результату за довжиною рядка)?


6

Випадок використання полягає в тому, що я шукаю певний атрибут CSS у каталозі файлів HTML / CSS / JS (включаючи підкаталоги). Деякі бібліотеки JS з одним лінером також мають атрибут CSS, який я шукаю.

Так чи є спосіб сказати grep, що він не повинен давати результат на рядок, який довший за мій визначений $ max_line_length?

Дякую!

Відповіді:


11

Перший підхід, спробуйте виключити однолінійний JS файли від того, щоб бути змучений в першу чергу. Часто вони матимуть ім'я, подібне до some-library.min.js, так що ви можете зробити щось подібне:

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

Інший підхід полягає в тому, що якщо ви знаєте, що це буде у файлі CSS, ви можете використовувати його ack обмежити пошук CSS-файлами (і ігнорувати різні VCS-файли):

$ ack --type=css ...

Однак, щоб відповісти на ваше запитання, ви можете написати регулярний вираз для відповідності довжині рядка. Наступне збігається з будь-яким рядком із 100 або менше символів.

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

2
+1 ack-grep на деяких системах
Dennis Williamson

1
Крім того, ack ігноруватимуть файли Javascript, що зменшилися. Він розглядає їх як не вихідний код, і тому ігнорує.
Andy Lester

1
Мій grep працював лише з {0,100} з якоїсь причини.
temoto
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.