在bash中另一个(例如VLOOKUP)查找从一个CSV值(Linux)的 [英] Find value from one csv in another one (like vlookup) in bash (Linux)

查看:263
本文介绍了在bash中另一个(例如VLOOKUP)查找从一个CSV值(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆