写一个AWK脚本,我想存储一个我在一个变量中找到的行,只有在以后,如果我也匹配另一行,打印出该原始行.
例:
a <-- save this one b c <-- Now that we found c,let's print a
Psudo,希望它工作完全像这样,代码:
/a/ { myvar = $0 } /c/ { print $myvar $0 }
在梦境中生产:
ac
我的一厢情愿的psudo代码的实际,迷幻,结果:
cc
注意:回答“只是打印一个,然后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
将输出
dc