如何使用AWK将带有特殊字符的字符串附加到每行

如何使用AWK将带有特殊字符的字符串附加到每行,awk,Awk,我有一个csv,对于csv中的每一行,我需要添加新列。其中一列是时间戳,它似乎正在中断操作 Example: col1,col2,col3 1,2,3 4,5,7 After col1,col2,col3,col4,col5,col6 1,2,3,01-01-2020 01:01:01,name,class 4,5,7,01-01-2020 01:01:01,name,class 我曾经 供参考 ORIG_FILE='sample.csv' NEW_FILE='new_sample.csv'

我有一个csv,对于csv中的每一行,我需要添加新列。其中一列是时间戳,它似乎正在中断操作

Example:
col1,col2,col3
1,2,3
4,5,7

After
col1,col2,col3,col4,col5,col6
1,2,3,01-01-2020 01:01:01,name,class
4,5,7,01-01-2020 01:01:01,name,class
我曾经 供参考

ORIG_FILE='sample.csv'
NEW_FILE='new_sample.csv'
values="01-01-2020 01:01:01,name,class"
awk -v d=$values -F"," 'BEGIN {OFS = ","} {printf("%s%s",$0,FNR>1?d RS:"col4,col5,col6" RS)}' $ORIG_FILE > $NEW_FILE
我对使用bash非常陌生,我正在努力解决这个问题

非常感谢您的帮助

orig_file='sample.csv'
new_file='new_sample.csv'
values='01-01-2020 01:01:01,name,class'
awk -v d="$values" 'BEGIN{FS=OFS=","} { print $0, (NR>1 ? d : "col4,col5,col6") }' "$orig_file" > "$new_file"

始终引用您的shell变量,对于未导出的shell变量名称,不要使用所有大写字母。

(编辑:顺便提一下,Excellecnt第一个问题!)。请尝试
awk-vd=“$values”…
。shell将单词按空格分隔,除非它们是单引号或dbl引号。在所有
“$variable\u value”
周围使用dbl引号。祝你好运@没用的避难所。我尝试了单引号和双引号。我还尝试了awk-vd=“${values}”…啊,错过了。您的
printf
fmt-str中缺少一个
%s
或两个。对于fmt-str之后的每个逗号分隔变量,您需要一个
%s
(或
%d
%f
等)来匹配。祝你好运。@SHEET,我使用了格式说明符和
d=“$values”…
现在似乎可以工作了。谢谢