Chinaunix
标题:
AWK实现VLOOKUP功能求助
[打印本页]
作者:
wan_qin
时间:
2019-08-01 14:55
标题:
AWK实现VLOOKUP功能求助
想用AWK实现EXCEL的VLOOUP功能,test1.csv和test2.csv文件内容如下
[root@localhost test]# cat test2.csv
aaa|111
bbb|222
[root@localhost test]# cat test1.csv
aaa|a|a1
bbb|b|a2
ccc|c|c1
需要的效果:
aaa|111|a|a1
bbb|222|b|a2
ccc||c|c1
用AWK命令输出的却是下面这种效果,不知道哪里出问题了。
[root@localhost test]# awk -F "|" -vOFS="|" '{if(NR==FNR){if($1!="" && $2!=""){eci[$1]=$2}}else{if($1 in eci){$1=$1"|"eci[$1]}else{$1=$2"|"} {print $0}}}' test2.csv test1.csv
|a|a111
|b|a222
c||c|c1
单独打印$1、$2、$3没有问题,如果打印$0就出问题
[root@localhost test]# awk -F "|" -vOFS="|" '{if(NR==FNR){if($1!="" && $2!=""){eci[$1]=$2}}else{if($1 in eci){$1=$1"|"eci[$1]}else{$1=$2"|"} {print $1}}}' test2.csv test1.csv
aaa|111
bbb|222
c|
[root@localhost test]# awk -F "|" -vOFS="|" '{if(NR==FNR){if($1!="" && $2!=""){eci[$1]=$2}}else{if($1 in eci){$1=$1"|"eci[$1]}else{$1=$2"|"} {print $2}}}' test2.csv test1.csv
a
b
c
[root@localhost test]# awk -F "|" -vOFS="|" '{if(NR==FNR){if($1!="" && $2!=""){eci[$1]=$2}}else{if($1 in eci){$1=$1"|"eci[$1]}else{$1=$2"|"} {print $3}}}' test2.csv test1.csv
a1
a2
c1
作者:
WilliBhamlll
时间:
2019-08-01 16:52
awk -F\| 'NR==FNR{a[$1]=$2;next}{sub($1,$1""FS""a[$1])}1' test2 test1
aaa|111|a|a1
bbb|222|b|a2
ccc||c|c1
复制代码
作者:
wan_qin
时间:
2019-08-01 17:08
回复
2#
WilliBhamlll
[root@localhost test]# awk -F\| 'NR==FNR{a[$1]=$2;next}{sub($1,$1""FS""a[$1])}1' test2.csv test1.csv
|a|a111
|b|a222
ccc||c|c1
我用您的脚本打印出来也是这样的。
作者:
wan_qin
时间:
2019-08-01 17:08
回复
2#
WilliBhamlll
[root@localhost test]# awk -F\| 'NR==FNR{a[$1]=$2;next}{sub($1,$1""FS""a[$1])}1' test2.csv test1.csv
|a|a111
|b|a222
ccc||c|c1
我用您的脚本也是这样的。
作者:
wan_qin
时间:
2019-08-01 17:09
回复
2#
WilliBhamlll
[root@localhost test]# awk -F\| 'NR==FNR{a[$1]=$2;next}{sub($1,$1""FS""a[$1])}1' test2.csv test1.csv
|a|a111
|b|a222
ccc||c|c1
作者:
WilliBhamlll
时间:
2019-08-01 17:20
回复
5#
wan_qin
把你的文件上传看看
作者:
wan_qin
时间:
2019-08-01 17:27
回复
6#
WilliBhamlll
已经上传,麻烦您帮忙看下。
Desktop.zip
2019-08-01 17:27 上传
点击文件名下载附件
326 Bytes, 下载次数: 21
作者:
WilliBhamlll
时间:
2019-08-01 17:35
回复
7#
wan_qin
你的源文件有问题,先执行下面的命令处理下。
dos2unix test1.txt
dos2unix test2.txt
复制代码
作者:
wan_qin
时间:
2019-08-01 17:42
回复
8#
WilliBhamlll
明白了,我原来的脚本也是没有问题的,就是因为文件格式的问题导致出错了,非常感谢!!!!!!!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2