Я много читал здесь о awk и переменных, но не смог найти то, что хочу. У меня есть несколько файлов ($ FILES) в каталоге ($ DIR), и я хочу найти в этих файлах все строки, содержащие: обе строки (SEARCH1 и SEARCH2). Использование sh (/ bin / bash): я НЕ хочу использовать команду чтения, поэтому я предпочитаю awk / grep / sed. Требуемый вывод - это строка (-и), содержащая 2 строки и соответствующий код. имя файла (ов) файла (ов). Когда я использую этот код, все в порядке:
FILES="news_*.txt"
DIR="/news"
awk '/Corona US/&&/Infected/{print a[FILENAME]?$0:FILENAME RS $0;a[FILENAME]++}' ${DIR}/${FILES}
Теперь я хочу заменить 2 шаблона («Corona US» и «Infected») переменными в команде awk, и я попытался:
SEARCH1="Corona US"
SEARCH2="Infected"
awk -v str1="$SEARCH1" -v str2="$SEARCH2" '/str1/&&/str2/{print a[FILENAME]?$0:FILENAME RS $0;a[FILENAME]++}' ${DIR}/${FILES}
Однако это не дало мне правильного вывода: оно оказалось пустым (ничего не нашел).