gpt4 book ai didi

awk - 花括号后面的数字有什么作用?

转载 作者:行者123 更新时间:2023-12-03 20:16:32 25 4
gpt4 key购买 nike

为什么

echo foo bar..baz bork | awk 'BEGIN{RS=".."} {gsub(OFS,"\t");}1'

似乎做同样的事情
echo foo bar..baz bork | awk 'BEGIN{RS=".."} {gsub(OFS,"\t");} {print;}'

?

事实上,任何不为零的数字(包括小数和负数)都会做同样的事情。但是,省略数字、使用文本字符或使用零不会打印任何内容。我没有在任何地方看到这个记录,尽管我可能错过了一些东西。

最佳答案

如果你还记得,awk是一种语言,它有一系列 <pattern> <action> 操作。每个模式都针对每一行进行评估(至少在概念上),当模式匹配时,执行操作。可以省略模式或操作。省略的模式匹配每一行;省略的操作默认为 {print $0} (又名 {print})。 “模式”可能是一个简单的正则表达式匹配,或者其他一些更复杂和更通用的条件,如果要执行操作,则必须评估为真(如 Ed Morton 在他的 comment 中所述)。

在您的示例中, 1是一种模式;它评估为真。未指定 Action ,因此调用默认 Action ,即 {print}{print $0} .除零或空字符串以外的任何值都会评估为真并将调用打印。 (请注意,如果您提到一个未初始化的变量(例如, c ),那么它会自动创建并设置为零,因此计算结果为 false。因此 awk 'c' <<<"Hi" 不打印任何内容。)

当然,与 BEGIN 和 END 模式相关的 Action 是专门处理的。

关于awk - 花括号后面的数字有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24643240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com