Количество одинаковых строк в каждом текстовом файле

Я полагаю, что опция --log=fdв duplicity предназначена для сложных конвейеров, где вы хотите разделить stderrи stdoutиз вашего журнала.

Этот ответ на этот вопросдает пример. Вот простой пример:

#!/bin/sh
# Generate output on three different fds
echo hello >&3
echo world >&2
echo today >&1

И при таком выполнении

./foo 2> 2.log 3> 3.log 1> 1.log

приводит к

$ cat 1.log 2.log 3.log
today
world
hello

1
28.08.2017, 17:30
5 ответов

Сgrep+wcконвейер:

for f in *.txt; do echo -n "$f "; grep -wo 'esr' "$f" | wc -l; done

grepопции:

  • -w- word-regexp (для соответствия целому/отдельному слову)

  • -o- вывести только совпавшие подстроки


  • wc -l- подсчитать количество строк (в нашем случае совпадающих слов) для каждого файла
5
27.01.2020, 23:10
strings./*.txt|tr " " "\n"|sort|uniq -c
4
27.01.2020, 23:10
for name in file*.txt; do
    printf 'Pattern occurs %d times in "%s"\n' "$(grep -wo 'pattern' "$name" | wc -l)" "$name"
done
2
27.01.2020, 23:10

Используйте grep, чтобы найти все экземпляры, затем подсчитайте уникальные строки, используяuniq -c.

grep "word" * | sort | uniq -c

Если вам нужны совпадения для входного файла, используйтеgrep -c:

grep -c "word" * 
3
27.01.2020, 23:10

Если вы хотите подсчитать каждое слово в любом количестве файлов, вы можете использовать AWK, например.:

awk 'BEGIN{RS="[[:space:]]+"}
     {counts[$0]++}
     END{for(word in counts){print word " - " counts[word]}
     ' file1 file2 file...

Это обрабатывает файл так, как если бы каждое слово было на отдельной строке, этоBEGIN{RS="[[:space:]]+"}часть , а затем подсчитывается каждый раз, когда он видит строку . Удаление части BEGINприведет к подсчету каждой обычной строки .

Если вас интересует только одно конкретное слово, вы можете изменить блок END, чтобы он выглядел примерно так:

END{print counts["esr"]}

Это напечатает только время появления "esr", но помните, что это -чувствительно к регистру.

Чтобы убрать чувствительность к регистру -, используйте counts[tolower($0)]++или counts[toupper($0)]++.

Также можно добавить проверки для вывода данных при переходе от одного файла к другому.

0
27.01.2020, 23:10

Теги

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