在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
在 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