请教一个awk条件合并两个文本的问题
时间:2011-04-26
来源:互联网
$ head a b
==> a <==
ETM2-0 1 XM-0-0-2 0RAL2 RALT2-0&&-31 0
1RAL2 RALT2-32&&-63 1
==> b <==
0RAL2 IEX WO
1RAL2 IEX WO
$ awk 'NR==FNR{a[$1]=$3}NR>FNR{print $0" "a[$1]}' b a
result
ETM2-0 1 XM-0-0-2 0RAL2 RALT2-0&&-31 0
1RAL2 RALT2-32&&-63 1 WO
问题:0RAL2 RALT2-0&&-31 0缺少对应状态,怎么办?
即我想得到的结果是
ETM2-0 1 XM-0-0-2 0RAL2 RALT2-0&&-31 0 WO
1RAL2 RALT2-32&&-63 1 WO
请各位帮助,谢谢!
==> a <==
ETM2-0 1 XM-0-0-2 0RAL2 RALT2-0&&-31 0
1RAL2 RALT2-32&&-63 1
==> b <==
0RAL2 IEX WO
1RAL2 IEX WO
$ awk 'NR==FNR{a[$1]=$3}NR>FNR{print $0" "a[$1]}' b a
result
ETM2-0 1 XM-0-0-2 0RAL2 RALT2-0&&-31 0
1RAL2 RALT2-32&&-63 1 WO
问题:0RAL2 RALT2-0&&-31 0缺少对应状态,怎么办?
即我想得到的结果是
ETM2-0 1 XM-0-0-2 0RAL2 RALT2-0&&-31 0 WO
1RAL2 RALT2-32&&-63 1 WO
请各位帮助,谢谢!
作者: conall 发布时间: 2011-04-26
- awk 'NR==FNR{a[$1]=$3}NR>FNR{c=NF==6?a[$4]:a[$1];print $0"\t"c}' b a
作者: lkk2003rty 发布时间: 2011-04-26
awk 'NR==FNR{a[$1]=$3;next}{print $0,NF==3?a[$1]:a[$4]}' b a
作者: yinyuemi 发布时间: 2011-04-26
谢谢lkk2003rty (小毛孩) ,黑哥也帮助进行了解答:awk 'NR==FNR{a[$1]=$3}NR>FNR{i=NF==3?$1:$4;print $0" "a[i]}' b a。基本类似,但是能否解答一下,谢谢!
作者: conall 发布时间: 2011-04-26
i=NF==3?$1:$4相当于
if(NF==3) i=$1;else i=$4
c=NF==6?a[$4]:a[$1] 相当于
if(NF==6) c=a[$4];else c=a[$1
if(NF==3) i=$1;else i=$4
c=NF==6?a[$4]:a[$1] 相当于
if(NF==6) c=a[$4];else c=a[$1
作者: conall 发布时间: 2011-04-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28