awk +添加列而不添加到标题

时间:2014-10-01 23:27:34

标签: bash awk

我正在研究这个awk教程here

$ head file
Name,Number,Letter
Unix,10,A
Linux,30,B
Solaris,40,C
Fedora,20,D
Ubuntu,50,E


此命令在最后一列之后插入一个新列。但我不想添加标题,我该怎么做?在此之后,我还想在之后添加标题名称。

$ awk -F, '{$(NF+1)=++i;}1' OFS=, file
Name,Number,Letter,1
Unix,10,A ,2
Linux,30,B ,3
Solaris,40,C ,4
Fedora,20,D ,5
Ubuntu,50,E,6

2 个答案:

答案 0 :(得分:4)

您可以跳过第一行:

awk -F, 'NR>1{$(NF+1)=++i;}1' OFS=, file

如果文件中可能有空格,那么您可以使用正则表达式来掩盖它们:

awk -F, '!/^$/ && NR>1{$(NF+1)=++i;}1' OFS=, file

要添加新标头,您可以执行以下操作:

awk 'NR==1{$0=$0",New_header";} NR>1{$(NF+1)=++i;}1' OFS=, file

就像@jaypal所说的那样,可能只是:

awk -F, 'NR==1{$0=$0",New_header";} NF && NR>1{$(NF+1)=++i;}1' OFS=, file

答案 1 :(得分:2)

$ awk 'BEGIN{FS=OFS=","} {print $0, (NR>1?NR-1:"new header")}' file
Name,Number,Letter,new header
Unix,10,A,1
Linux,30,B,2
Solaris,40,C,3
Fedora,20,D,4
Ubuntu,50,E,5