在awk中转义嵌套双引号

时间:2018-08-21 14:40:52

标签: windows batch-file awk printf quotes

在Windows Server环境中,无法转义引号内的引号。使用下面的有效批处理代码作为基础:

awk -F "|" "$4 ~ /JUVENILE/ {sum +=$6} END {printf sum}" sourcedata.file

尝试将"%.3f"包含到printf中时会出现问题。我很困惑,无法在我的环境中正确地避开这些引号。

awk -F "|" "$4 ~ /JUVENILE/ {sum +=$6} END {printf """%.3f""", sum}" sourcedata.file

以上 将在命令提示符下运行,但是 在简单的批处理文件中将无法运行。我还尝试用"%.3f"\"%.3f\"替换\""%.3f\"",它们在批处理文件中也不起作用。

1 个答案:

答案 0 :(得分:1)

Windows避免使用噩梦般的引用规则的标准建议是:

a)不要从Windows调用脚本。安装cygwin或类似工具以获得类似UNIX的环境,然后从中调用脚本,或者...

b)不要在Windows中的命令行上指定脚本文本,而是将其保存在文件中,即,将其放在名为nametable <- data.frame(Name="\n\t\t\t\t\t\t\t\t\t\t\t\t\tMike Moon\n\t\t\t\t\t\t\t\t", stringsAsFactors=FALSE) 的文件中:

foo.awk

,然后以BEGIN { FS="|" } $4 ~ /JUVENILE/ {sum +=$6} END {printf "%.3f", sum}

的身份执行