虽然我有 awk脚本,
/regex2/{
var = $1}
/regex1/{
print var}
我在输入文件上执行了
regex1
This should be assigned as variable regex2
我没有打印输出。所需的输出是:“打印出来”。
我可能会考虑使用BEGIN:
BEGIN{
/regex2/
var = $1}
/regex1/{
print var}
但显然BEGIN无法容纳正则表达式匹配功能。有什么建议吗?
答案 0 :(得分:4)
这将达到预期的效果:
awk '/regex2/ { print $1 }'
否则,您需要两次读取文件并执行以下操作。它会将/regex2/
的最后一次出现存储在var
中。重新阅读文件后,每次var
出现时都会打印/regex1/
。请注意,您将在输出中获得一个空行,并在换行符中显示关键字“This”:
awk 'FNR==NR && /regex2/ { var = $1; next } /regex1/ { print var }' file.txt{,}
答案 1 :(得分:0)
通常这种事情是用旗帜完成的:
/regex1/ { f = 1 }
f && /regex2/ { var = $1; f = 0 }