Awk 将新列添加到文件中

Awk 将新列添加到文件中,awk,add,Awk,Add,如何向带有awk代码的文件中添加新列 原始文件 F1 F2 F3 ..F10 F1 F2 F3 ..F10 F11 将F11添加到original.file F1 F2 F3 ..F10 F1 F2 F3 ..F10 F11 尝试: awk'BEGIN{getline to_add

如何向带有awk代码的文件中添加新列

原始文件

F1 F2 F3 ..F10 
F1 F2 F3 ..F10 F11
将F11添加到original.file

F1 F2 F3 ..F10 
F1 F2 F3 ..F10 F11
尝试:

awk'BEGIN{getline to_add<“f3”}{print$0,to_add}'f
从文件“f3”读取要添加的列,并将其保存在变量中以添加。之后,它将该列添加到文件f的每一行


HTH Chris

awk'{print$0,“F11”}'original.file
如果要向文件中添加列,可以执行以下操作

备注:我们假设字段分隔符
FS
等于字符串
“FS”
。您可以将其替换为任何内容,或者如果您只是将其用作字段分隔符,则可以在以下任一解决方案中删除
BEGIN{FS=OFS=“FS”}
部分

在开头添加一列:

awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file
awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file
awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file
awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file
在末尾添加一列:

awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file
awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file
awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file
awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file
在列之前添加列
n

awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file
awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file
awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file
awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file
在列后添加列
n

awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file
awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file
awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file
awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file
在每列之前添加一列
n1
n2<…<<代码>nm:
(从后面开始)

或者不同的价值观

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
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
在列
n1
n2<…<<代码>nm:
(从后面开始)

或者不同的价值观

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
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

F11从哪里来?它是根据F1..F10计算的还是存储在另一个文件中?它是如何存储在另一个文件中的?每行每个字段?或者CSV中的字段,或者类似的内容?两个文件之间是否存在映射关系?最好给我们一些例子,比如original.file、“other.file”和您期望的输出。可能的重复:。我的答案是使用
paste
而不是
awk
,但其他答案也可能有用。或者甚至
awk'$0=$0“F11”'原始.file
awk-v OFS=x'{print$0,“F11”}
如果您想更改输出字段分隔符(x),这会为我将f3的第一行添加到每列。它应该是awk'{getline to_add<“f3”;打印$0,to_add}'f吗?太好了。非常有用。只是想知道“在n列之后/之前添加列”中的1来自何处,以及它的含义是什么?@applequist 1是执行默认操作的默认条件,该操作是
print$0
。看见