为什么awk不将变量写入csv文件?

我有一个 csv 文件,我需要在最后添加一些列。新列是从其他文件中获取的变量。

STNO=3389
STNNAME=SWORDS

awk -F "," '{ stnname='"$STNNAME"';stno='"$STNO"';print $0","stnname","stno }' infile

输出示例。

992501062,-6.278983000,202105210736,,3389

stno 写得很好,但 stnname 是空白的。似乎我可以使用数字变量但不能使用文本。

任何帮助表示赞赏。谢谢。

回答

您正在插入文字符号SWORDS,显然您希望插入带引号的字符串。awk 没有命名变量,SWORDS因此它解析为空字符串。

更好的卫生和稳定性是避免将垃圾直接插入到您的 awk 脚本中。使用-vawk命令行上的值通过。

awk -v stnname="$STNNAME" -v stno="$STNO" 'BEGIN {FS=OFS=","}
{ print $0, stnname , stno }' infile

切线地,避免您的私有 shell 变量大写。


以上是为什么awk不将变量写入csv文件?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>