在awk中转义嵌套的双引号

Escaping nested double quotes in awk

在 Windows 服务器环境中,在转义引号内的引号时遇到问题。使用下面的功能批处理代码作为基础:

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

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

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

以上在命令提示符下工作,但不会在简单的批处理文件中工作。我还尝试用 \"%.3f\"\""%.3f\"" 替换 "%.3f",这些在批处理文件中也不起作用。

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

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

b) 不要在 Windows 中的命令行中指定脚本文本,而是将其保存在文件中,即将其放入名为 foo.awk:

的文件中
BEGIN { FS="|" }
 ~ /JUVENILE/ {sum +=}
END {printf "%.3f", sum}

然后执行为awk -f foo.awk sourcedata.file