我正在研究这个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
答案 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