该命令将打印a
.
echo "line1 a b c" | awk '{ print $2 }'
如果我将单引号更改为双引号,就像这样,它将打印整行。
echo "line1 a b c" | awk "{ print $2 }"
为什么?我知道我应该使用单引号,但是如果我使用双引号,为什么会打印整行?
If the awk
命令是单引号的,$2
不被 shell 解释,而是作为文字字符串传递$2
to awk
. awk
那么将会print
输入字符串中的第二个空格分隔的标记,在本例中是a
.
echo "line1 a b c" | awk '{ print $2 }' # prints the second space-delimited token
> a
If the awk
命令是双引号的,$2
由 shell 解释。因为$2
为空(在本例中),则替换为空字符串。awk
看到一个命令,看起来像awk "{ print }"
,这是打印所有内容的指令。
echo "line1 a b c" | awk '{ print }' # prints all input
> line1 a b c
也可以使用双引号,并转义$
,这将导致$
不被 shell 解释,而是$2
字符串将被传递到awk
.
echo "line1 a b c" | awk "{ print \$2 }" # prints the second space-delimited token
> a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)