Я хочу отфильтровать строки, сопоставленные с помощью grep, чтобы из результатов сопоставления удалялись строки длиннее некоторой максимальной длины.
Примером использования этого является использование grep
для поиска совпадений для определенного вызова функции. У меня есть каталог на сервере Linux, где хранится коллекция репозиториев кода. Я знаю, что ранее я написал некоторый код, использующий определенную функцию, и который я мог бы использовать в качестве примера для чего-то другого.
Я не помню, в каком каталоге находится этот пример кода, но я знаю функцию, которую использовал.
Если я grep
найду совпадения без фильтрации длинных строк, я получу стену текста из-за ложных совпадений.
Я не могу легко привести примеры того, что я вижу на своем экране — просто представьте, что вывод grep
включает в себя несколько строк длиной в тысячи символов и даже в тысячи строк. Такие строки затемняют вывод и делают невозможным чтение — поэтому я стараюсь их отфильтровать.
Важная строка grep
— это grep '^\{1,200\}$'
, что означает:
^
привязать начало строки$
якорь конца строки.\{1,200\}
сопоставьте любой символ (.
) от 1 до 200 разgrep -rI some_function . 2>/dev/null | grep '^.\{1,200\}$'
@EdMorton Да, спасибо, что указали на это. В данном случае это предполагаемая цитата о поведении: я хочу отфильтровать строки, сопоставленные с помощью grep, так, чтобы строки длиннее некоторой максимальной длины удалялись из результатов сопоставления.
В таких ситуациях я склонен перенаправлять вывод
grep
вless -S
.