Как ограничить grep сканированием только первых 10 строк?

Чтобы обойти ограничение в 4 основных раздела, вы можете создать расширенный раздел вместо основного раздела, а затем разделить его на четыре логических раздела (/, /boot, /swapи/home).

Кроме того, в установщике CentOS выберите параметр для повторного -форматирования этих разделов (, кроме свопа, конечно ). Это решило проблему для меня, когда у меня было такое же сообщение об ошибке.

0
10.07.2020, 19:46
3 ответа
for i in $(foo); do echo -e "$i \c"; head -n10 $i | grep -c regex; done

напечатает имена файлов из сценария foo, за которыми следует число. Если число равно нулю, то совпадения regexнет, и эти нулевые записи в результате можно легко отфильтровать, если они не нужны.

0
18.03.2021, 23:20

Как было сказано, решить половину проблемы:

foo | xargs grep -m 1 regex

Для решения остальных требуется немного больше скриптов:

foo | xargs sh -c 'for file; do head "$file"; done | grep regex' sh

Но это не дает вам имен файлов, потому что grep читает поток.

Если у вас GNU awk:

foo | xargs gawk -v pattern='regex' -v lines=10 -v OFS=':' '
  $0 ~ pattern {print FILENAME, FNR, $0}
  FNR == lines {nextfile}
'

Чтобы просто получить имя файла

  $0 ~ pattern {print FILENAME; nextfile}
1
18.03.2021, 23:20

Модифицированная версия ответа Гленна Джекмана , которая выводит имена файлов:

foo | xargs sh -c 'for file; do head "$file" | grep -l --label="$file" regex; done' sh
0
18.03.2021, 23:20

Теги

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