如何在AWK变量中存储字符串(行)
在编写AWK脚本时,我希望将在变量中找到的一行存储起来,只有在以后,如果我还匹配了另一行,才打印出原始行 例如:如何在AWK变量中存储字符串(行),awk,Awk,在编写AWK脚本时,我希望将在变量中找到的一行存储起来,只有在以后,如果我还匹配了另一行,才打印出原始行 例如: a <-- save this one b c <-- Now that we found c, let's print a 在梦境中产生: ac 我一厢情愿的psudo代码的实际、迷幻、结果: cc 注意:回答是作弊“只需打印a,然后再打印c,这样可以简化本例。现实世界的用例要求仅根据进一步的条件打印c,因此需要存储最近看到的a,以便打印后续c。工作代
a <-- save this one
b
c <-- Now that we found c, let's print a
在梦境中产生:
ac
我一厢情愿的psudo代码的实际、迷幻、结果:
cc
注意:回答是作弊“只需打印a
,然后再打印c
,这样可以简化本例。现实世界的用例要求仅根据进一步的条件打印c
,因此需要存储最近看到的a
,以便打印后续c
。工作代码
/a/ { myvar = $0 }
/c/ { print myvar $0 }
将$
视为一个操作符,它获取给定值
字段号
此处myvar
保存值“a”。在数字上下文中,不以数字开头的字符串被视为值为零。因此,$myvar
被视为$“a”
,即$0
利用这一点的一种奇怪方式:
awk '/a/ {myvar = $0} /c/ {print $myvar $1}' <<END
2a
b
c d
END
删除
myvar
+1前面的美元符号另一种常见的方法是将$
看作字段数组的名称。它在句法上有点分崩离析,但在功能上,这是一个不错的类比。
awk '/a/ {myvar = $0} /c/ {print $myvar $1}' <<END
2a
b
c d
END
dc