Input file test.csv
=================
1,abc, 12,12-19
2,aslk,16,13-143
3,kjsd,45,11-137
4,ajsd,144,10-190
required output:
========================
1,abc, 12,12-19,z
2,aslk,16,13-143,z
3,kjsd,45,11-137,z
4,ajsd,144,10-190,z
我正在使用以下命令。
awk -F"," 'BEGIN { OFS = "," } {$5="z"; print}' input.csv > output.csv
但我得到了:
========================
1,abc, 12,12-19
,z
2,aslk,16,13-143
,z
3,kjsd,45,11-137
,z
4,ajsd,144,10-190
,z
请帮助我获得所需的输出。
答案 0 :(得分:2)
你可以使用这个awk:
awk 'BEGIN { OFS = "," } {print $0, "z"}' input.csv > output.csv
甚至更简单地使用sed
:
sed 's/$/,z/' input.csv > output.csv
答案 1 :(得分:1)
您的输入文件包含control-Ms,由某些Windows程序完全免费提供。要摆脱它们首先在您的文件上运行dos2unix或类似的,然后运行您的awk脚本。
答案 2 :(得分:0)
使用sed:
sdlcb@ubuntu:~/AMD_C$ sed 's/$/,z/g' input.csv > output.csv
1,abc, 12,12-19,z
2,aslk,16,13-143,z
3,kjsd,45,11-137,z
4,ajsd,144,10-190,z
sdlcb@ubuntu:~/AMD_C$ z=25; sed "s/$/,$z/g" input.csv > output.csv
1,abc, 12,12-19,25
2,aslk,16,13-143,25
3,kjsd,45,11-137,25
4,ajsd,144,10-190,25
使用awk:
sdlcb@ubuntu:~/AMD_C$ awk 'sub(/$/,",z")' input.csv > output.csv
1,abc, 12,12-19,z
2,aslk,16,13-143,z
3,kjsd,45,11-137,z
4,ajsd,144,10-190,z
sdlcb@ubuntu:~/AMD_C$ awk -v z="25" '{sub(/$/,","z)} {print}' input.csv > output.csv
1,abc, 12,12-19,25
2,aslk,16,13-143,25
3,kjsd,45,11-137,25
4,ajsd,144,10-190,25
答案 3 :(得分:0)
这是一个简短的awk
awk '$0=$0",z"' file
1,abc, 12,12-19,z
2,aslk,16,13-143,z
3,kjsd,45,11-137,z
4,ajsd,144,10-190,z