[英]Escaping nested double quotes in awk
在 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"
\\""%.3f\\""
并且这些在批处理文件中也不起作用。
Windows 避免噩梦般的引用规则的标准建议是:
a) 不要从 Windows 调用脚本。 安装 cygwin 或类似的以获得类 UNIX 的环境,然后从中调用脚本,或者...
b) 不要在 Windows 的命令行上指定脚本文本,而是将其保存在一个文件中,即把它放在一个名为foo.awk
的文件中:
BEGIN { FS="|" }
$4 ~ /JUVENILE/ {sum +=$6}
END {printf "%.3f", sum}
然后将其作为awk -f foo.awk sourcedata.file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.