- 论坛徽章:
- 0
|
有一个数据文件a:
# 990430_232320 000210_132231 0.0
YOS -0.22000003
YUL 0.079999924
# 990501_000720 000210_132231 0.0
LIJ -0.080000043
YUL 0.12 1 P
# 990707_214529 000210_132231 0.0
YOS 0.059999943
# 990907_090133 000210_132231 0.0
BAS 0.38 1 P
# 991027_211412 000210_132231 0.0
HEQ -0.65999997
其中#后的两列为ID(旧),此外还有一ID列表b,第一列为旧的ID,第二列为新的ID:
000210_132231 1001
990430_232320 1002
990501_000720 1003
990707_214529 1004
990907_090133 1005
991027_211412 1006
现在想把a中的所有旧ID替换成新的ID,生成文件c:
# 1002 1001 0.0
YOS -0.22000003
YUL 0.079999924
# 1003 1001 0.0
LIJ -0.080000043
YUL 0.12 1 P
# 1004 1001 0.0
YOS 0.059999943
# 1005 1001 0.0
BAS 0.38 1 P
# 1006 1001 0.0
HEQ -0.65999997
我之前用sed一个一个替换,但是由于数据太多,执行效率太低了,后来用awk的双文件处理,但是执行过程中会出错,命令如下:
awk 'NR==FNR{a[$1]=$2;next}NR>FNR{if($2 in a)print $1,a[$1],$3,$4;else print $0}' b a > temp
awk 'NR==FNR{a[$1]=$2;next}NR>FNR{if($3 in a)print $1,$2,a[$1],$4;else print $0}' b temp > c
请问是哪里出错了,应该怎样做,谢谢! |
|