什么是差异NULL,"",\ 0,在变量'值的awk中为空

时间:2015-03-27 09:52:13

标签: awk null

就像标题所说的那样,我不知道变量'值 NULL NUL “” \ 0 为空

任何人都可以解释一下吗?

感谢

2 个答案:

答案 0 :(得分:0)

据我所知,awk中没有特殊的NULL值,空值或未设置的变量之间也没有区别。如果尚未为变量分配值,则将根据上下文计算空字符串""0。例如:

awk 'BEGIN{print "a" b "c"}'

此处b是未设置的变量。在字符串上下文中,它的计算结果为"",生成输出ac

awk 'BEGIN{print 1+a}'

a尚未设置,但处于数字上下文中。在这种情况下,它的计算结果为0,产生输出1

空字节\0完全不同。您可以像任何其他转义序列一样打印一个,例如标签\t或换行符\n。看到一个人就更难了。为此,您可以使用cat -v

$ awk 'BEGIN{print "a\0c"}' | cat -v
a^@c

输出中的^@表示存在空字节。

你也可以"看"使用xargs的空字节:

$ awk 'BEGIN{print "a\0c"}' | xargs -0
a c

-0的{​​{1}}选项告诉它参数将由空字节分隔。如您所见,有两个参数xargsa

答案 1 :(得分:0)

@Tom Fenech
谢谢,我有这样一个问题的原因是我在阅读awk的信息时对变量RS感到困惑。

正如信息所说:

  

空字符串`""' (没有任何字符的字符串)有一个特殊的   意思是“RS'”的值。这意味着记录是由分隔的   一个或多个空白行,没有别的。

  

BEGIN {RS =" \ 0"整个文件变成一条记录?

现在,我在阅读你的解释后知道了它!