提问人:LincolnLogger 提问时间:8/21/2018 最后编辑:codeforesterLincolnLogger 更新时间:8/21/2018 访问量:435
在 awk 中转义嵌套双引号
Escaping nested double quotes in awk
问:
在 Windows Server 环境中,无法转义引号内的引号。使用以下正常运行的批处理代码作为基础:
awk -F "|" "$4 ~ /JUVENILE/ {sum +=$6} END {printf sum}" sourcedata.file
尝试包含到 printf 时出现问题。我很困惑,无法在我的环境中正确逃避这些引号。"%.3f"
awk -F "|" "$4 ~ /JUVENILE/ {sum +=$6} END {printf """%.3f""", sum}" sourcedata.file
上述方法在命令提示符下有效,但在简单的批处理文件中无效。我还尝试替换为 and,这些在批处理文件中也不起作用。"%.3f"
\"%.3f\"
\""%.3f\""
答:
1赞
Ed Morton
8/21/2018
#1
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
评论
1赞
LincolnLogger
8/22/2018
在这种情况下,我的特殊错误是嵌套引号旁边的字符的结果。我在嵌套引号方面遇到了几个问题,并且成功地使用了这种方法。将来会使用;谢谢!
评论
'
"
'$4 ~ /JUVENILE/ {sum +=$6} END {printf "%.3f", sum}'
awk -F '|' '$4 ~ /JUVENILE/ {sum +=$6} END {printf "%.3f", sum} sourcedata.file
%
'%.3f'