это немного странно, и я не `не проводил глубоких исследований, но мне нужно было использовать
zip -r --include="server_*"...
включить файлы, начинающиеся с sth, чтобы это работало в настройке CI/CD
просто добавьте флаг -c
, чтобы grep подсчитал его для вас.
Если слишком много нулевых результатов, отфильтровать с помощью awk
grep -rnic 'type="abc_' * | awk -F: '$NF>0'
Попробуйте подобное:
grep -rni 'type="abc_' * |sed -n "s/.*\(abc_[0-9]*\).*/\1/p"|uniq -c| sed "s/\(.*\)\(abc.*\)/\2 found \1 times/"
Это использует find
, чтобы получить список файлов, передает его в cat
и анализирует вывод с помощью awk
:
find. -type f |
xargs -I xx cat "xx" | awk '/type="abc_/{
for(i=1;i<=NF;i++){
if($i~/type="abc_/){ d[$i]++ } } }
END{ for(i in d){ print i"\tfound",d[i],"times." } }'
type="abc_4 found 1 times.
type="abc_3 found 2 times.
type="abc_6 found 1 times.
type="abc_2 found 2 times.
type="abc_10 found 3 times.
type="abc_5 found 1 times.
Он использует find вместо простого cat *
для большей гибкости при поиске.
xargs.. cat |..
можно укоротить наfind. -type f -exec cat {} + | awk..