Поиск пропавшей строки во многих файлах, которые интересуют только некоторые (целевые файлы) - PullRequest
0 голосов
/ 07 февраля 2019

У меня более 1000 файлов в одном каталоге, но интересующие меня файлы - половина из них!Я хочу искать только эти файлы для определенных вещей очень часто.К сожалению, невозможно сопоставить что-либо в FILENAME.Единственное, что я имею в виду, - это сопоставление некоторой строки, которая всегда представлена ​​в «заинтересованных» для меня файлах в примере: «специальные» ... и составить каким-либо образом СПИСОК этих файлов и искать их только в них для некоторых вещей.Может быть, какие-то сложенные команды grep?

Моя попытка найти пропущенную строку " line4 " во всех файлах:

grep -c 'line4' * | grep -P ':0$'
file2.log:0
file3.log:0
file4.log:0
file5.log:0

# -c count lines that match the string and grep zero ones..

Например, у нас есть 5 файлов в одной папке:

ls -l
file1.log  # interesed file (always contains on some line word: "special")
file2.log  # interesed file (always contains on some line word: "special")
file3.log  # interesed file (always contains on some line word: "special")
file4.log  # NOT interesed file
file5.log  # NOT interesed file


cat file1.log 
line1
special
line2
line3
line4
line5

cat file2.log 
line1
line2
special
line3

cat file3.log 
line1
line2
special
line3
line5

cat file4.log 
line1
line2
line3
line5

cat file5.log 
line1
line2
line3
line5

Результат должен быть только file2 и file3, потому что содержит уникальную строку «special» и слово «line4» НЕ присутствует в этих заинтересованных файлах:

file2.log
file3.log

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

С GNU awk для ENDFILE и границ слов:

awk '/\<special\>/{x=1} /\<line4\>/{y=1} ENDFILE{if (x && y) print FILENAME; x=y=0}' *
0 голосов
/ 07 февраля 2019

Вы можете сделать это, "объединив" две команды grep:

grep -wl special `grep -wvl line4 *`

Внутренний grep создаст список файлов, которые не содержат строку "line4".Внешний grep будет искать слово «special» в списке файлов, сгенерированных первым grep

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...