File 1 ---------+ |ID | +---------+ | 15 | | 45 | | 18 | | 76 | | 29 | | 10 | | 40 | +---------+ File 2: | ID Name | +---------+ | 12 abc | | 18 nop | | 15 ujh | | 30 jkl | | 15 lmn | | 18 tre | | 19 hgt | +---------+ Desired output: +---------+ | ID Name | +---------+ | 18 nop | | 15 ujh | | 15 lmn | | 18 tre | +---------
下面的Join cammand没有给出所需的结果(它应该返回文件2中File1表中存在第一列中的值的所有行。
加入-1 1 -2 1 File1.txt File2.txt
请帮忙。
答案 0 :(得分:1)
好吧,既然你专门提出了一个awk解决方案,那么这就是一种方法:
#!/bin/sh
awk 'BEGIN {
while ((getline line < "File1.txt") > 0) {
split(line, a)
for (fld in a) {
if (a[fld] ~ /^[0-9]*$/ ) {
targets[a[fld]]=a[fld]
}
}
}
} {
if (NF == 4 && $2 ~ /^[0-9]*$/ ) {
if ($2 in targets) {
print $0
}
} else {
print $0
}
}' File2.txt
虽然我很想知道如果你有权访问它,为什么你不会从数据库中获取这个输出。