在文件中添加新列

use*_*487 14 awk add

如何使用awk代码向文件添加新列?

original.file

F1 F2 F3 ..F10 
Run Code Online (Sandbox Code Playgroud)

将F11添加到original.file

F1 F2 F3 ..F10 F11
Run Code Online (Sandbox Code Playgroud)

nic*_*ick 19

awk '{print $0, "F11"}' original.file

  • 甚至`awk '$0=$0"F11"' original.file` (2认同)

Chr*_*ris 7

尝试:

awk 'BEGIN{getline to_add < "f3"}{print $0,to_add}' f
Run Code Online (Sandbox Code Playgroud)

读取要从文件"f3"添加的列并将其保存在变量to_add中.之后,它将列添加到文件f的每一行.

HTH Chris

  • 这将f3的第一行添加到我的每一列中。应该是awk'{getline to_add &lt;“ f3”; 打印$ 0,to_add}'f代替? (2认同)

kva*_*our 6

如果要将列添加到文件中,可以执行以下操作。

备注:我们假设字段分隔符FS等于string "fs"。您可以用任何东西替换它,或者如果仅使用<blanks>作为字段分隔符,则可以BEGIN{FS=OFS="fs"}在以下任何一种解决方案中删除该零件。

在开头添加一列:

awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file
Run Code Online (Sandbox Code Playgroud)

在最后添加一列:

awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file
Run Code Online (Sandbox Code Playgroud)

在column之前添加一列n

awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file
Run Code Online (Sandbox Code Playgroud)

在栏后添加栏n

awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file
Run Code Online (Sandbox Code Playgroud)

在每列n1<< n2... < nm:的前面添加一列(从后面开始)

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
     {for(i=m;i>0;--i) $(a[i]) = value OFS $(a[i])}1' file
Run Code Online (Sandbox Code Playgroud)

或不同的值

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
     {for(i=m;i>0;--i) $(a[i]) = v[i] OFS $(a[i])}1' file
Run Code Online (Sandbox Code Playgroud)

在每列n1<< n2... < nm:之后添加一列(从后面开始)

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
     {for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS value}1' file
Run Code Online (Sandbox Code Playgroud)

或不同的值

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
     {for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS v[i]}1' file
Run Code Online (Sandbox Code Playgroud)