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

为什么awk不将变量写入csv文件?,awk,Awk,我有一个csv文件,我需要在末尾添加一些列。新列是取自其他文件的变量 STNO=3389 STNNAME=SWORDS awk -F "," '{ stnname='"$STNNAME"';stno='"$STNO"';print $0","stnname","stno }' infile 输出的示例 992501062,-6.2789830002010510736,,3389 序号写得很好

我有一个csv文件,我需要在末尾添加一些列。新列是取自其他文件的变量

STNO=3389
STNNAME=SWORDS

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

输出的示例

992501062,-6.2789830002010510736,,3389

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

谢谢你的帮助。
谢谢。

在引用的海洋中很容易迷失方向。可以使用
-v
捕获环境变量,如下所示:

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

然后,您可以直接在命令中使用它们,而无需尝试拼凑字符串

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

更好的卫生和稳定性是为了避免在Awk脚本中插入垃圾。在Awk命令行上使用
-v
传递值

awk-v stnname=“$stnname”-v stno=“$stno””开始{FS=OFS=“,”}
{打印$0,stnname,stno}'infle

顺便说一句,

谢谢你的努力,抱歉,这还不清楚,请你详细解释一下你在这里想要达到的目标,谢谢你(不是我的反对票)。@RavinderSingh13抱歉我不够清楚,我对这一点还不熟悉,并且尽量简洁。回复的Tks我怀疑有一种更好的方法,就是在CSV和填充这些变量的文件上运行awk,而不是首先在shell中提取它们的值。你需要将OFS的
设置为逗号。是的-我关注的是
-v
位。。。你的回答完全正确