grep -rc не работает; подсчитать количество совпадений в каталоге

Это диск на контроллере SmartArray (контроллер 0, диск 0, раздел 1). Вы найдете больше информации в документации ядра cciss , и вы можете использовать утилиты CCISS , чтобы получить более подробную информацию о диске.

Если вас интересуют фактические данные о диске, а не информация о RAID с HBA, вы также можете использовать smartmontools :

smartctl -a -d cciss,0 /dev/cciss/c0d0

покажет всю доступную информацию с первого диска.

1
13.04.2017, 15:36
1 ответ

Это ожидается.

grep -r -n выполнит рекурсивный grep , отображая строки, соответствующие заданному шаблону, с префиксом с именем файла и номером строки. Он предоставит вам каждую строку, имеющую совпадение в каждом файле.

-n Каждой строке вывода предшествует ее относительный номер строки в файле , начиная со строки 1. Счетчик номера строки сбрасывается для каждого обработанного файла.

grep -r -c выполнит рекурсивный grep , отображая имена файлов всех рассмотренных файлов, за которыми следует количество совпадений с шаблоном в этом файле. Это даст вам по одной строке для каждого файла.

-c В стандартный вывод записывается только количество выбранных строк.

Чтобы получить количество совпадений шаблона в любом файле в определенном каталоге (рекурсивно), вы можете передать результат grep -r на wc -l как предложил в ответе на ссылку :

$ grep -r 'pattern' . | wc -l

Чтобы использовать только grep для достижения этой цели:

$ grep -r 'pattern' . | grep -c 'pattern'

Хотя использование для этого механизма регулярных выражений, безусловно, является излишним. job при использовании wc для подсчета новых строк является «правильным инструментом для работы».

Обратите внимание, что есть также флаг -o для grep :

-o Печатать каждое совпадение, но только совпадение, а не всю строку.

Это может быть полезно, если вы хотите подсчитывать каждое индивидуальное совпадение в каждой строке отдельно:

$ grep -r -o 'pattern' . | wc -l

Сравните, например, следующие два вызова grep bash или ksh93 ):

$ grep 'l' <<<"Hello world!" | wc -l
1

$ grep -o 'l' <<<"Hello world!" | wc -l
3
2
28.01.2020, 01:04

Теги

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