首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个文件到另一个文件的vlookup

从一个文件到另一个文件的vlookup
EN

Stack Overflow用户
提问于 2020-08-17 14:56:49
回答 2查看 58关注 0票数 2

尝试使用bash脚本对一个文件执行vlookup,但我无法使它工作。知道我错过了什么吗?

第一档

代码语言:javascript
复制
NAS88_01 iSC0   360
NAS88_01 iSC1   30016.8
NAS88_01 iSC101 210
NAS88_01 iSC102 210
NAS88_01 iSC103 510
NAS88_01 iSC104 510
NAS88_01 iSC105 510
NAS88_01 iSC106 2102.4
NAS88_01 iSC107 2102.4

第二档案

代码语言:javascript
复制
iSC0    ilehost1
iSC1    ilehost99
iSC101  ilehost00
iSC102  ilehost21
iSC103  ilehost22
iSC104  ilehost87
iSC105  ilehost11
iSC106  ilehost24
iSC107  ilehost65

期望输出

代码语言:javascript
复制
NAS88_01 ilehost1  360
NAS88_01 ilehost99 30016.8
NAS88_01 ilehost00 210
NAS88_01 ilehost21 210
NAS88_01 ilehost22 510
NAS88_01 ilehost87 510
NAS88_01 ilehost11 510
NAS88_01 ilehost24 2102.4
NAS88_01 ilehost65 2102.4

试过但不起作用。

代码语言:javascript
复制
FNR==NR {
  a[$0]=1  
  next     
}
$1 in a {  
  print $1 "," $4
}

awk -f vlookup.awk FILE2 FILE1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-17 15:04:09

根据您所展示的样品,请您试一试。

代码语言:javascript
复制
awk 'FNR==NR{a[$1]=$2;next} {print $1,($2 in a?a[$2]:""),$3}' Input_file2  Input_file1

在OP的尝试中发出问题:,在上面的命令中是固定的。

数组的错误键是在读取samples.

  • That's时分配给数组的,不应该是$0,而应该是$1(第一个字段),如所示,为什么在读取第二个Input_file命名为Input_file1时,$1在检查条件时不工作,因为以前读取的键与之不匹配。
票数 4
EN

Stack Overflow用户

发布于 2020-08-17 23:54:37

假设文件分别在第二列和第一列上排序,就像示例一样,这是一个简单的join

代码语言:javascript
复制
$ join -12 -21 -o 1.1,2.2,1.3 file1.txt file2.txt
NAS88_01 ilehost1 360
NAS88_01 ilehost99 30016.8
NAS88_01 ilehost00 210
NAS88_01 ilehost21 210
NAS88_01 ilehost22 510
NAS88_01 ilehost87 510
NAS88_01 ilehost11 510
NAS88_01 ilehost24 2102.4
NAS88_01 ilehost65 2102.4

对于文件2中缺少的任何值(例如iSC108 ),如何集成脚本上的"N/A“?

代码语言:javascript
复制
join -12 -21 -o 1.1,2.2,1.3 -a1 -e 'N/A' file1.txt file2.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63453427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档