- 论坛徽章:
- 0
|
回复 11# Herowinter
现在要的要求{
以下两个文件以“|”分割前两列为关建列,需要把b.txt的内容合并到a.txt里面,两个文件可能出现a.txt的关建列不在b.txt,b.txt的关建列不在a.txt中,不在的一方用0.0代替(注:a、b两个文件只是个例子,实际中两个文件中有N 列N 行,但关键列只有第一列)
a.txt
A0001|0.1|0.3|
A0002|1.1|1.2|
A0003|1.1|1.4|
b.txt
A0001|1.1|1.2|1.3|
A0002|1.4|1.8|1.9|
A0004|1.1|1.2|1.3|
最终生成以下结果
A0001|0.1|0.3|1.1|1.2|1.3|
A0002|1.1|1.2|1.4|1.8|1.9|
A0003|1.1|1.4|0.0|0.0|0.0|
A0004|0.0|0.0|1.1|1.2|1.3|
不知道怎么改你这个命令:
awk -F\| 'NR==FNR{s1=$3;for(i=4;i<=NF;i++)if(length($i))s1=s1""FS$i;a[$1FS$2]=s1;if(FNR==1){d1="0.0";for(i=4;i<=NF;i++)if(length($i))d1=d1""FS"0.0"};next} {print $0(length(a[$1FS$2])?a[$1FS$2]:d1)FS;delete a[$1FS$2];if(FNR==1){d2="0.0";for(i=4;i<=NF;i++)if(length($i))d2=d2""FS"0.0"}} END{for(i in a)print i""FS""d2""FS""a""FS}' b.txt a.txt
} |
|