awk可以打印带有千位分隔符的数字:
$ awk "BEGIN {printf \"%'d\", 1000}"
1,000
然而,它需要一个单引号意味着你必须逃离每次事实"
,并$
在整个脚本:
$ echo 1000 2000 | awk "{printf \"%'d\", \$2}"
2,000
这在这里很容易,但是对于大型示例可能会很麻烦。我想到做这样的事情:
$ echo 1000 2000 | awk '{printf z, $2}' z="%'d"
2,000
但这对于高级示例来说也不是很好:
$ echo 1000 2000 | awk '{printf "hello " z " world " z, $1, $2}' z="%'d"
hello 1,000 world 2,000
我试图弄乱OFMT
and CONVFMT
,但是它们似乎没有任何作用:
$ echo 1000 2000 | awk '{print $2}' OFMT="%'d" CONVFMT="%'d"
2000
可以按我尝试使用它们的方式使用这些变量,还是可以使用另一种更好地处理报价问题的方法?
要将单引号字符嵌入单引号分隔的命令行脚本中,只需\047
在需要引号的地方使用八进制转义序列:
$ awk 'BEGIN {printf "%\047d\n", 1000}'
1,000
奖励点:不要使用等效的十六进制转义序列\x27
:
$ awk 'BEGIN{print "\047foo!\047"}'
'foo!'
$ awk 'BEGIN{print "\x27foo!\x27"}'
oo!'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句