удар находит объединенными в цепочку к grep, который затем печатает

У меня есть серия индексных файлов для некоторых файлов данных, которые в основном берут формат

индексный файл: asdfg.log.1234.2345.index

файл данных: asdfg.log

Идея состоит в том, чтобы сделать поиск всех индексных файлов. Если значение XXXX появляется в индексном файле, пойдите и grep его соответствующий файл данных и распечатайте строку в файле данных, где значение XXXX появляется.

До сих пор я могу просто искать индексные файлы значение XXXX, например.

find . -name "*.index" | xargs grep "XXXX"     // Gives me a list of the index files with XXXX in them

Как я беру соответствие индексного файла и затем grep его соответствующий файл данных?

7
задан Jonathan Leffler 20 July 2010 в 13:58
поделиться

2 ответа

Это помогает?

find . -name '*.index' |
xargs grep -l "XXXX" |
sed 's/\.log\.*/.log/' |
xargs grep "XXXX"

Команда find взята из вашего примера. Первый xargs grep перечисляет только (индексные) имена файлов. sed сопоставляет имена файлов с именами файлов данных. Затем второй xargs grep сканирует файлы данных.

Возможно, вы захотите вставить шаг sort -u после шага sed .

3
ответ дан 7 December 2019 в 16:38
поделиться
grep -l "XXXX" *.index | while read -r FOUND
do
   if [ -f "${FOUND%.log*}log" ];then
      grep "XXXX" "$FOUND"
   fi
done 
0
ответ дан 7 December 2019 в 16:38
поделиться
Другие вопросы по тегам:

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