2015-09-09 3 views
1

У меня есть следующий файл .sh, который ищет тонны поисковых элементов в тоннах файлов. Но я хочу продолжить цикл while при первом результате, если один из элементов поиска присутствует в $ file. В настоящее время это так, что запрос сопоставляется во всех файлах. Первый удар достаточно.Как продолжить цикл в первом результате GREP

Как это сделать?

while read file 
do 
    echo $file 
    grep -o -f searchItems.txt "$file" >> results.txt 
done < filelist.txt 

Спасибо.

ответ

1

Вы можете использовать break после успешного возвращения grep:

while read -r key; do 
    while read -r actualFile; do 
    echo "searching for $key in $actualFile" 
    grep -o "$key" "$actualFile" >> messageKeysInUse.txt && break 
    done < filelist.txt 
done < allMessageKeysFromDB.txt 

Он вырвется из внутренней во время цикла, как только grep успешно.

+1

SO EASY ???? Благодарю. – cy221

+0

Извините, но это не работает. У меня всего 4 удара после 31 секунды. Я ожидаю около 900. – cy221

+0

Спасибо. Но я думаю, что мне нужно переключать while-loops, потому что у моих results.txt много одинаковых ударов. – cy221

Смежные вопросы