我正在尝试为我的csv文件添加前缀。以下是源csv
A,B
121ABC,London
2212ABC,Paris
312ABC,Tokyo
我正在使用以下awk
命令
$ awk -F=',' -vOFS=',' '{$2="AC_"$2; print}' t.csv >t1.csv
但是,输出有点在csv文件中添加了另一列。
A,B,AC_
121ABC,London,AC_
2212ABC,Paris,AC_
312ABC,Tokyo,AC_
关于错误位置的任何指针?
答案 0 :(得分:1)
您可以使用此awk
:
awk 'BEGIN{FS=OFS=","} {$2 = "AC_" $2} 1' file
A,AC_B
121ABC,AC_London
2212ABC,AC_Paris
312ABC,AC_Tokyo
答案 1 :(得分:1)
您将FS设置为=,
而不是,
。使用-F','
或-v FS=','
但不使用-F=','
。
由于输入和输出字段分隔符都需要,
,因此您应该在一个位置将它们一起设置为该值,而不是将它们分别设置为相同的值:
awk 'BEGIN{FS=OFS=","} {$2="AC_"$2; print}' t.csv >t1.csv
答案 2 :(得分:1)
sed
可能更简单
$ sed 's/,/&AC_/' file
A,AC_B
121ABC,AC_London
2212ABC,AC_Paris
312ABC,AC_Tokyo
答案 3 :(得分:0)
这是因为您将字段分隔符作为逗号给出,但Input_file中没有逗号。 尝试:
awk '{$2="AC_"$2} 1' OFS="," Input_file
通过与" AC _"连接来改变第二个字段;然后提到1将打印行。您可以将此命令的输出重定向到.csv文件。
EDIT1:根据OP,有逗号作为字段分隔符,所以现在更改解决方案。
awk -F, '{$2="AC_"$2} 1' OFS="," Input_file