выводить поисковый запрос с количеством строк - PullRequest
0 голосов
/ 03 марта 2012

Здравствуйте, начинающий вопрос Bash. Я хочу просмотреть несколько файлов, найти строки, содержащие поисковый запрос, посчитать количество уникальных строк в этом списке и затем распечатать в текстовом файле:

  1. имя входного файла
  2. используемый поисковый термин
  3. количество уникальных строк

поэтому пример выходной строки для файла «Firstpredictoroutput.txt», в котором используется поисковый термин «Stop_gained», где в файле 10 уникальных строк:

Firstpredictoroutput.txt Stop_gained 10 

Я могу получить уникальный счетчик для одного файла, используя:

grep 'Search_term' inputfile.txt | uniq -c | wc -l | >>output.txt 

Но я пока недостаточно знаю о реализации циклов в конвейерах с использованием bash. Все мои входные файлы заканчиваются на * ForexTorput.txt

Любая помощь очень ценится.

Заранее спасибо,

Rubal

Ответы [ 3 ]

0 голосов
/ 03 марта 2012

Вы можете использовать find:

find . -type f -exec sh -c "grep 'Search_term' {} | uniq -c | wc -l >> output.txt" \;

Хотя у вас могут возникнуть проблемы со странными именами файлов.Вы можете добавить дополнительные параметры для поиска, например, для обработки только файлов '.txt':

find . -type f -name "*.txt" -exec sh -c "grep 'Search_term' {} | uniq -c | wc -l >> output.txt" \;
0 голосов
/ 03 марта 2012
q="search for this"
for f in *.txt; do echo "$f $q $(grep $q $f | uniq | wc -l)"; done > out.txt
0 голосов
/ 03 марта 2012

Вы можете написать функцию с именем fun и вызвать fun с двумя аргументами: filename и pattern

$ fun() { echo "$1 $2 `grep -c $2 $1`"; }
$ fun input.txt Stop_gained
input.txt Stop_gained 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...