Использование CLI после удаления всех оболочек (rbash, bash, dash и sh)

Еще два варианта :

Сawk

awk '{if ($0~"pattern") print $0; nextfile;}' mydir/*

или если ваша версия awkне поддерживает nextfile(, спасибо Stéphane Chazelas за предложение ) :

awk 'FNR==1{if ($0~"pattern") print $0;}' mydir/*

прочитает только первую строку перед переключением на следующий файл и распечатает ее только в том случае, если она соответствует "pattern".

Преимущество заключается в том, что можно точно -настроить как поле для поиска шаблона для (, используя, например,. $2для поиска только по второму полю )и выходу (, например.$3, чтобы напечатать третье поле, или FILENAME, или даже смешать ).

Обратите внимание, что сFNR(«номером текущей входной записи», т. е. версией с номером строки ), вы можете точно -настроить строку (с ), по которой вы хотите выполнить grep :FNR==3для третьей строки, FNR<10для 10 первых строк и т. д. (Я думаю, в этом случае, если вы имеете дело с очень большими файлами и ваша версия awkподдерживает это, вы можете смешать FNRс nextfileдля повышения производительности.)

С head, сохранение имен файлов

head -n1 -v mydir/files*|grep -B1 pattern
Опция

-vиз headбудет печатать имена файлов, а опция -B1из grepбудет печатать предыдущую строку совпадающих строк, то есть имена файлов. Если вам нужны только имена файлов, вы можете передать их дальше grep :

head -n1 -v mydir/*|grep -B1 pattern|grep ==>

Как заметил в комментариях дон _crissti, остерегайтесь имен файлов, соответствующих шаблону, хотя…

0
19.11.2017, 00:05
0 ответов

Теги

Похожие вопросы