У меня есть регулярное выражение для использования с awk, чтобы найти любое из указанных слов в строке файла. Похоже, это awk "/word1/||/word2/||/word3/" filename
. В качестве альтернативы я пытался указать слова вроде этого WORDS="word1 word2 word3"
, а затем использовать подстановку строки bash, чтобы сформировать регулярное выражение для передачи в awk.
Я пробовал множество способов сделать это безрезультатно. awk просто выводит содержимое всего файла или выдает какую-то жалобу на форму регулярного выражения.
Вот что у меня есть:
#!/bin/bash
FILE="myfile"
WORDS="word1 word2 word3"
# use BASH string substitution to obtain the regex which should look like this:
# "/word1/||/word2/||/word3/"
REGEX=\"/${WORDS// //||/}/\"
awk ${REGEX} $FILE
Я вполне уверен, что это связано с кавычками, и я пробовал различные методы, используя echo и back ticks, и могу получить его look right (когда отражено), но когда на самом деле пытаюсь его использовать, это терпит неудачу.