我有一个包含以下内容的 csv 文件:
col1, col2, col5
1, 1, 1
2, 2, 2
3, 3, 3
4, 4, 4
我需要在文件的第三个位置添加一列,其中包含标题但包含空值。
col1, col2, col3, col4
1, 1, , 1
2, 2, , 2
3, 3, , 3
4, 4, , 4
有没有办法使用 cat、sed、awk 或 cut 等 Linux 命令之一来完成此操作?
我知道使用 cut 可以按 columns 修改文件cut -d , -f1,2,3 file1 > file2
。但似乎没有添加自定义列的选项。
任何帮助将非常感激。
答案1
以下是sed
实现结果的命令:
sed '1s/\(.*,\)\([^,]*\)$/\1col3,\2/;
2,$s/\(.*,\)\([^,]*\)$/\1,\2/' file.csv
,
这会找到一行中的最后一个并将其替换为
col3,
在第一行,
在所有其他线路上
该命令只是将所需的输出打印到stdout
.如果您想就地编辑文件,请-i
切换到上述命令。
答案2
$ awk 'BEGIN { FS=","; OFS=",\t" };
FNR == 1 { print $1,$2,"col3","col4" };
FNR > 1 { print $1,$2,"\t",$3 }' file.csv
col1, col2, col3, col4
1, 1, , 1
2, 2, , 2
3, 3, , 3
4, 4, , 4