AWK-как присвоить значение переменной из соответствующего регулярного выражения, которое приходит позже?
Пока у меня есть этот awk скрипт,
/regex2/{
var = $1}
/regex1/{
print var}
, который я выполнил над входным файлом :
regex1
This should be assigned as variable regex2
Я не получил никакой печатной продукции. Желаемый результат:" это " должно быть распечатано.
Я мог бы тогда подумать, чтобы использовать BEGIN:
BEGIN{
/regex2/
var = $1}
/regex1/{
print var}
Но, видимо, начинать не предусмотрена функция сопоставления регулярных выражений. Любое предложение в этом?
2 ответов:
Это позволило бы достичь желаемого результата:
awk '/regex2/ { print $1 }'В противном случае вам нужно будет прочитать файл дважды и выполнить что-то вроде следующего. Он будет хранить последнее вхождение
/regex2/вvar. При повторном чтении файла он будет печататьvarдля каждого вхождения/regex1/. Обратите внимание, что вы получите пустую строку в выводе и ключевое слово "This"в новой строке:awk 'FNR==NR && /regex2/ { var = $1; next } /regex1/ { print var }' file.txt{,}
Comments