Я хотел бы grep
для строки, но также показать предыдущие пять строк и следующие пять строк, а также соответствующие строки. Как я смогу сделать это?
search
logging
grep
command-line-interface
Марк Харрисон
источник
источник
man grep | grep -C 1 context
:)man grep | grep -C 1 "\-C"
;)Ответы:
Для BSD или GNU
grep
вы можете использовать,-B num
чтобы указать, сколько строк перед совпадением и-A num
сколько строк после совпадения.Если вы хотите одинаковое количество строк до и после вы можете использовать
-C num
.Это покажет 3 строки до и 3 строки после.
источник
-A
а также-B
будет работать, как будет-C n
(дляn
строк контекста) или просто-n
(дляn
строк контекста ... до тех пор, пока n равно от 1 до 9).источник
-n
формат и обнаружил, что он работает только до9
. Ибо15
он возвращает 5 строк-A
,-B
или-C
). Обычно за параметром опции следует значение (-o a.out
для указания выходного файла в GCC), но он также может функционировать как простой переключатель / флаг (-g
для включения информации отладки в GCC). Однако пробелы между опциями являются необязательными, поэтому для опций без значения можно объединить их (-ABC
), что означает, что-15
интерпретируется-1 -5
(две отдельные опции) и-5
переопределяется-1
.ack работает с аргументами, аналогичными grep, и принимает
-C
. Но обычно это лучше для поиска по коду.источник
grep
, не стоит ли использовать его для «рекламы»ack
(что действительно является отличным инструментом) - хорошая идея…Это будет grep "myfile" для "astring", и покажет 5 строк до и после каждого матча
источник
Я обычно пользуюсь
Многие инструменты, такие как grep, также имеют действительно отличные файлы man. Я часто обращаюсь к справочной странице grep, потому что с ней можно многое сделать.
Многие инструменты GNU также имеют информационную страницу, которая может содержать более полезную информацию в дополнение к странице руководства.
источник
Использовать grep
источник
Ищите «17655» в «/some/file.txt», показывая контекст из 10 строк до и после (с помощью Awk), выводу предшествует номер строки и двоеточие. Используйте это в Solaris, когда 'grep' не поддерживает опции «- [ACB]».
источник
ripgrep
Если вы заботитесь о производительности, используйте
ripgrep
синтаксис, аналогичныйgrep
, например,Есть также такие параметры, как
-A
/--after-context
и-B
/--before-context
.Инструмент построен на основе движка регулярных выражений Rust, что делает его очень эффективным для больших данных.
источник
Вот решение @Ygor в
awk
Примечание. Замените
a
иb
переменные числом строк до и после.Это особенно полезно для системы , которая не поддерживает Grep - х
-A
,-B
и-C
параметры.источник
-5
получает вас5
строку выше и ниже матч «thestring» эквивалентен-C 5
или-A 5 -B 5
.источник
Grep имеет опцию под названием
Context Line Control
, вы можете использовать--context
в этом, просто,или
Должен сделать трюк
источник
Я использую, чтобы сделать компактный способ
Это эквивалент
источник
Если вы часто выполняете поиск по коду, AG серебряный искатель гораздо эффективнее (т.е. быстрее), чем grep.
Вы показываете контекстные строки, используя опцию -C.
Например:
источник