Unix awk f = 1做什么

时间:2014-06-11 10:39:16

标签: unix awk

所以现在我读了一些unix脚本,我不太确定它是否符合我的想法。

foo=/some/directory/rules
awk '/^test=/ { print "test="foo; f=1 }
f==0 { print }
{ f=0 }' \
/some/other/directory/file

我的猜测是这不应该运行(因为“test =”foo),但确实如此 - 所以我认为打算如果'/ some / other / directory / file'中的一行匹配得到它使用praefix“test =”写入'/ some / directory / rules',另外它只是打印在控制台上?

我无法在手册页中找到任何内容,示例也不使用f =?语法

1 个答案:

答案 0 :(得分:2)

获取由Arnold Robbins撰写的Effective Awk Programming,第三版,因为您目前对awk语法非常困惑。您发布的脚本的目的是将/some/other/directory/file的内容打印到stdout,除非一行以test=开头,在这种情况下,将该行替换为test=/some/directory/rules。< / p>

更多awk-ish编写的方式就是:

foo=/some/directory/rules
awk -v foo="$foo" '{print (/^test=/ ? "test="foo : $0)}' /some/other/directory/file