3

虽然我有这个awk 脚本

/regex2/{
var = $1}

/regex1/{
print var}

我在输入文件上执行:

regex1

This should be assigned as variable regex2

我没有打印输出。所需的输出是:要打印的“This”。

然后我可能会考虑使用BEGIN:

BEGIN{
/regex2/
var = $1}

/regex1/{
print var}

但显然 BEGIN 不能适应正则表达式匹配功能。对此有什么建议吗?

4

2 回答 2

4

这将达到预期的结果:

awk '/regex2/ { print $1 }'

否则,您需要读取该文件两次并执行以下操作。它将存储最后一次出现的/regex2/in var。重新读取文件后,它将var为每次出现的/regex1/. 请注意,您将在输出中获得一个空行,并在换行符上获得关键字“This”:

awk 'FNR==NR && /regex2/ { var = $1; next } /regex1/ { print var }' file.txt{,}
于 2012-09-30T07:19:08.167 回答
0

通常这种事情是用一个标志来完成的:

/regex1/ { f = 1 }
f && /regex2/ { var = $1; f = 0 }
于 2012-10-01T16:22:42.730 回答