2016-03-10 3 views
0

я могу сделать следующее, используя для циклаодна из командной строки Grep и количество слов рекурсивно

for f in *.txt; do grep 'RINEX' $f |wc -l; done 

Есть ли возможность получить индивидуальный файл отчета, запустив один лайнер?

Это означает, что я хочу Grep & туалет один файл в то время, таким же образом, как

grep 'RINEX' *.txt 

UPDATE:

grep -c 'RINEX' *.txt 

возвращает имя каждого файла и его соответствующий номер случаев. Thx @Evert

+0

Как 'Grep«RINEX»* .txt' работать один файл одновременно. Это фактически ваш for-loop, который работает в одном файле за раз. (Btw: '$ f.txt' или просто' $ f'?) – Evert

+0

Или вы ищете вариант count для grep? "-c, --count: только количество выбранных строк записывается на стандартный вывод." – Evert

+0

Thx. Я исправил первый. Второй ответ был ожидаемым поведением. – AjanO

ответ

0

grep не подходит для этой задачи.

grep на основе линии, например. линия grep 'o' <<< "fooo" вернется 1 линия. однако у нас есть 3o s.

Это один вкладыш должен делать то, что вы хотите:

awk -F'RINEX' 'FILENAME!=f{if(f)print f,s;f=FILENAME;s=0} 
       {s+=(NF-1)} 
       END{print f,s}' /path/*.txt 
Смежные вопросы