在这个答案中,
awk '$2=="no"{$3="N/A"}1' file
Run Code Online (Sandbox Code Playgroud)
被接受了.请注意1
AWK脚本的末尾.在评论中,答案的作者说
[1]是显示当前行的神秘方式.
我很困惑.这是如何运作的?
jks*_*hah 34
在awk
,
由于1
始终求值为true,因此它执行默认操作{print $0}
,因此会打印存储的当前行$0
所以,awk '$2=="no"{$3="N/A"}1' file
相当于和简写
awk '$2=="no"{$3="N/A"} {print $0}' file
Run Code Online (Sandbox Code Playgroud)
再次$0
是打印的默认参数,所以你也可以写
awk '$2=="no"{$3="N/A"} {print}' file
Run Code Online (Sandbox Code Playgroud)
事实上,您也可以使用任何非零数字或任何总是求值为1的条件代替1
文件说
在awk规则中,可以省略模式或动作,但不能同时省略.如果省略模式,则对每个输入行执行操作.如果省略该操作,则默认操作是打印与该模式匹配的所有行.
因此,它将其视为1
没有行动的模式.默认操作是打印该行.
即使你有一些规则,比如
awk '
in_net {
if (/^\s+bindIp:/) {
print " bindIp: 0.0.0.0"
next
} else if (/^\s*(#.*)?$/) {
in_net = 0
}
}
/^net:/ {
in_net = 1
}
1
' /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)
您仍然需要1
,因为只有在遇到没有操作的规则时才会触发默认操作.