Первый, ср. эта страница , чтобы объяснить, почему не стоит использовать
for i in `cat list1.txt`
... когда-нибудь. * * 1006
Во-вторых, это , почему бы не использовать
cat list2.txt | awk ...
Извините за арфу. Теперь ... попробуй
while read -r val || [[ -n "$val" ]]
do awk "/$val/ { flag=1; next } /Flag2/ { flag=0 } flag" list2.txt
done < list1.txt
awk
в двойных кавычках ... не идеально.
Или, как предлагает Чарльз, используйте -v (всегда слушайте Charles & Ed ...)
while read -r val || [[ -n "$val" ]]
do awk -v i="$val" '
$0 ~ i { flag=1; next }
/Flag2/ { flag=0; }
flag
' list2.txt
done < list1.txt
Все еще жду образцов файлов. Пожалуйста, , взгляните на формат этих файлов, чтобы я мог запустить действительный тест.
Обратите внимание, что || [[ -n "$val" ]]
требуется только в том случае, если есть вероятность, что в последней записи не будет перевода строки.