在bash中另一个(例如VLOOKUP)查找从一个CSV值(Linux)的 [英] Find value from one csv in another one (like vlookup) in bash (Linux)
问题描述
我已经尝试过,我在网上找到解决我的问题,但没有好结果的所有选项。
I have already tried all options that I found online to solve my issue but without good result.
基本上我有两个CSV文件(管道分隔):
Basically I have two csv files (pipe separated):
file1.csv:
123 | 21 | 0452 | IE | IE | 1 | MAYOBAN |布林|办公|街头| MAIN STREET | MAYOBAN |
123|21|0452|IE|IE|1|MAYOBAN|BRIN|OFFICE|STREET|MAIN STREET|MAYOBAN|
123 | 21 | 0453 | IE | IE | 1 | CORKKIN | ROBERT | SURNAME |软木| APTS | CORKKIN |
123|21|0453|IE|IE|1|CORKKIN|ROBERT|SURNAME|CORK|APTS|CORKKIN|
123 | 21 | 0452 | IE | IE | 1 | CORKCOR |名称|哈灵顿|都柏林|街| CORKCOR |
123|21|0452|IE|IE|1|CORKCOR|NAME|HARRINGTON|DUBLIN|STREET|CORKCOR|
file2.csv:
MAYOBAN | BANGOR | 2400
MAYOBAN|BANGOR|2400
MAYOBEL | BELLAVARY | 2400
MAYOBEL|BELLAVARY|2400
CORKKIN | KINSALE | 2200
CORKKIN|KINSALE|2200
CORKCOR |软木| 2200
CORKCOR|CORK|2200
DUBLD11 |都柏林11 | 2100
DUBLD11|DUBLIN 11|2100
我需要一个Linux bash脚本的基础上POS7的file1中的内容从文件2找到POS.3的价值。
I need a linux bash script to find the value of pos.3 from file2 based on the content of pos7 in file1.
例如:
文件1,第1行,POS机7:MAYOBAN
找到MAYOBAN file2中,返回POS 3(2400)
Example: file1, line1, pos 7: MAYOBAN find MAYOBAN in file2, return pos 3 (2400)
输出应该是这样的:
2400
2200
2200
等...
请帮忙
亚采
推荐答案
一个小方法,远处是完美的:
A little approach, far away to be perfect:
DELIMITER="|"
for i in $(cut -f 7 -d "${DELIMITER}" file1.csv );
do
grep "${i}" file2.csv | cut -f 3 -d "${DELIMITER}";
done
这篇关于在bash中另一个(例如VLOOKUP)查找从一个CSV值(Linux)的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!