为什么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 变量大写。