【发布时间】:2020-06-04 14:04:58
【问题描述】:
更新:
我有这个 awk 命令,我想嵌套到一个 system("") 命令中。
awk ' BEGIN {yr=2016} !/^#/ && NF!=0 { for(i=2;i<=NF;i++) a[i]+=$i } END { for (y=2;y<=NF;y++) print yr++ " - (" a[y] " Loads)" }' vol.dat
所以我尝试了这个:
system("awk ' BEGIN {yr=2016} !/^#/ && NF!=0 { for(i=2;i<=NF;i++) a[i]+=$i } END { for (y=2;y<=NF;y++) print yr++ \" - (\" a[y] \" Loads)\" }' vol.dat")
由于嵌套,Bash 不喜欢它,而且我显然没有正确转义引号。但是我尝试转义我无法用空格打印的字符。
这是一些示例输入,但正如我所说,这不是 awk 问题,而是 awk 命令嵌套在双引号和转义字符中的问题:
vol.dat
Jan 0 165 165 228 78
Feb 10 52 149 196 79
Mar 46 186 159 137 182
Output:
2016 (56 Loads)
2017 (403 Loads)
2018 (473 Loads)
2019 (561 Loads)
2020 (339 Loads)
【问题讨论】:
-
我无法重现此问题。您能否为我们提供一个造成此问题的最小示例?小版
vol.dat -
edit 你的问题包括minimal reproducible example 简洁、可测试的样本输入和预期输出。见How to Ask。您应该以从
sh -c "..."调用 awk 为示例,而不是从 gnuplot 的system("...")调用,因为相对较少的人会使用后者进行测试,并且几乎可以肯定两者都存在相同的问题。 -
Output是你得到的输出还是你想要的输出?请确保向我们展示您想要的输出。