我有3个文件
1文件
14/09/15
14/09/15
14/09/15
14/09/15
14/09/15
2file
14/09/01
14/09/01
14/09/01
14/09/01
14/09/01
和3file
15/09/14,11-37,01/09/14,1224A,0G,71%,RGS
15/09/14,11-41,01/09/14,2700A,0G,94%,RAN
15/09/14,11-43,01/09/14,2701A,0G,100%,RAN
15/09/14,11-44,01/09/14,2701B,0G,92%,RAN
15/09/14,11-46,01/09/14,2708A,0G,88%,RAN
我需要将3f中的第1列替换为1f中的第1列,将第3列中的第3列替换为第2列中的第1列
如何使用awk替换?
答案 0 :(得分:1)
以下awk代码将非常有用
$ awk 'BEGIN{OFS=FS=","}NF==1{line[FNR]=line[FNR]","$0} NF>1{split(line[FNR], a); $1=a[2]; $2=a[3]; print $0}' 1file 2file 3file
14/09/15,14/09/01,01/09/14,1224A,0G,71%,RGS
14/09/15,14/09/01,01/09/14,2700A,0G,94%,RAN
14/09/15,14/09/01,01/09/14,2701A,0G,100%,RAN
14/09/15,14/09/01,01/09/14,2701B,0G,92%,RAN
14/09/15,14/09/01,01/09/14,2708A,0G,88%,RAN
它的作用??
OFS=FS=","
将输出字段分隔符OFS
和字段分隔符FS
设置为,
NF==1{line[FNR]=line[FNR]","$0}
如果字段数/ columsn数NF
为1,请将值保存在逗号分隔的line
变量中
NF>1{split(line[FNR], a); $1=a[2]; $2=a[3]; print $0}
在NF
大于一个
split(line[FNR], a);
将line
变量拆分为数组a
$1=a[2]; $2=a[3];
设置第一列和第二列
print $0
打印整个记录