Подсчет вхождений слова во всех файлах отдельно в каталоге - PullRequest
0 голосов
/ 04 июля 2019

У меня есть * .txt файлы в каталоге, где я хочу найти «>» в ​​каждом * .txt файле. Я пытаюсь выполнить следующую команду:

grep '>' *.txt|wc -l

Но он дает мне общую сумму всех вхождений в каталоге, а не один файл за раз.

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

wc бесполезно, используйте параметр -c команды grep (man grep):

grep -c '>' *.txt
0 голосов
/ 04 июля 2019

Использование awk. Сначала некоторые тестовые данные:

$ cat f1
> a > b
> c
$ cat f2
d e 
f

Скрипт awk:

$ awk '
FNR==1 { f[FILENAME]=0 }  # define an array element for each file
(c=gsub(/>/,"&")) {       # count >s on record
    f[FILENAME]+=c
}
END {                     # in the end
    for(i in f)           # iterate all files
        print i,f[i]      # and output
}' f1 f2

Выход:

f1 3
f2 0

Используя grep вы теряете файлы без попаданий:

$ grep -Ho \> f1 f2 | cut -d : -f 1 | uniq -c
      3 f1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...