写一个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
注意:回答“只是打印a
,然后c
,这样做可以简化这个例子。真实世界的用例只需要打印c
根据更多条件,因此需要将最近看到的a
存储在机会上以下c
。
答案 0 :(得分:6)
工作代码
/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
答案 1 :(得分:2)
删除myvar