Я не знаком с snmpwalk, но из вопроса (и из моего предыдущего неправильного ответа) кажется, что он выдает несколько строк вывода. Мне также кажется, что большинство результатов вашего сценария повторяются/избыточны, т.е. всегда есть две строки с форматом:
A,B,C
...
A,B,D
и вы хотите получить другой результат с половиной строк и выглядящий как
A,B,C,D
В этом случае, возможно, будет проще оставить ваш сценарий как есть и передать вывод через трубу следующему сценарию AWK:
BEGIN{
FS=",";
}
{
if ( ($1,$2) in A ) {
print A[$1,$2] "," $3;
} else {
A[$1,$2]=$1 "," $2 "," $3;
}
}
который выглядит следующим образом для однострочного сценария, который вы можете вырезать и вставить.
| awk 'BEGIN{FS=","}{if ( ($1,$2) in A ) {print A[$1,$2] "," $3;} else {A[$1,$2]=$1 "," $2 "," $3;}}'
Это поможет?
Grep имеет режим регулярных выражений Perl (-P )и только count -(-c)
$ grep -c -P 'ABCD\ \t\,EFGH,\,' file
1
Попробуйте это, чтобы получить количество файлов с шаблоном
grep -rlP "ABCD \t,EFGH, " directory | wc -l
r
рекурсивный поиск файлов P
Perl-режим l
печатать имя каждого входного файла, из которого обычно печатается вывод. Сканирование останавливается при первом совпадении. Чтобы получить список файлов:
grep -rlP "ABCD \t,EFGH, " directory | awk -F '/' '{print $2}'
Эта команда подсчитывает количество файлов в текущем каталоге, содержащих совпадения с вашим шаблоном:
grep -Psl 'ABCD \t,EFGH,,' * | wc -l
(Как и в большинстве других решений, он будет неправильно учитывать файлы, которые содержат встроенные символы новой строки в своем имени. В мире GNU вы можете использовать grep -PZsl '...pattern...' * | tr '\n\0' 'X\n' | wc -l
, чтобы исправить это.)
Сzsh
(cd folder && grep -l $' \t './*(D.)) | grep -c /
Будет подсчитано количество обычных файлов в каталоге folder
, содержащих хотя бы одно вхождение <space><tab><space>
.
Рекурсивно:
(cd folder && grep -l $' \t './/**/*(D.)) | grep -c //
Рекурсивно вы также можете использоватьfind
:
(cd folder && find.//. -type f -exec grep -l $' \t ' {} +) | grep -c //
Если вы хотите учитывать только файлы, в которых <space><tab><space>
находится в первом столбце, измените шаблон на $'^[^,]* \t '
.