Unix awk f=1做什么

Unix awk f=1做什么,unix,awk,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=”匹配,那么它将被

所以现在我正在读一些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=?syntax

获取Arnold Robbins的《有效的Awk编程》第三版,因为您目前对Awk语法非常困惑。您发布的脚本的目的是将
/some/other/directory/file
的内容打印到stdout,除非一行以
test=
开头,在这种情况下,将该行替换为显示
test=/some/directory/rules
的行

更糟糕的写作方式是:

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

它只是给变量
f
赋值
1
,它可以被称为任何东西。另外,为什么您认为
“test=“foo
会导致它无法运行?这不起作用,因为您需要重定向到该文件。另外,未设置
foo
,因为它是一个bash变量,必须以某种方式提供给awk。例如,使用
awk-vfoo=$foo
@Jidder,谢谢你,现在一切都有意义了:D