найти только первое вхождение, используя только grep

Спасибо за ссылку в вашем комментарии, JigglyNaga. Отсюда я обнаружил, что моя команда du -hs bin показывает использование диска содержимым каталога. На самом деле есть два отдельных образа, смонтированных на каждой из двух точек монтирования (mount1 разделен на разделы, mount2 - это просто файловая система в чистом виде ext3).

Согласно ссылке в комментарии, если я хочу проверить размер файла или каталога отдельно, без учета дискового пространства, я могу использовать ls -l или du - b . При этом размер корзины и все ее содержимое одинаковы для обеих точек монтирования. С этого момента я буду использовать эти команды. Спасибо!

3
12.04.2017, 14:33
2 ответа

По умолчанию grep печатает строки , соответствующие шаблону, поэтому, если шаблон появляется один или несколько раз в строке, grep напечатает всю строку .

Добавление флага -m 7 укажет grep напечатать только первые 7 строк, в которых появляется шаблон.

Итак, это должно делать то, что вы хотите (я не тестировал):

grep -o -m 1 xyz myfile | head -1

Изменить: как указано @Kusalananda, вам не нужен строго флаг -m , но используйте его означает, что grep не нужно анализировать весь файл, и результат будет быстрее, особенно если myfile - большой файл.

16
27.01.2020, 21:12

Ответ на ваш вопрос находится в Страница руководства grep:

$ grep -m1 'searchstring' имя_файла

Параметр -m является ключом. -m1 покажет только первое совпадение, -m 2 - первые 2 совпадения и так далее.

-1
27.01.2020, 21:12

Теги

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