繁体   English   中英

在awk中转义嵌套的双引号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM