首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个文件,如果列相同,则用某个值替换下一列。

比较两个文件,如果列相同,则用某个值替换下一列。
EN

Unix & Linux用户
提问于 2020-04-10 13:39:03
回答 1查看 180关注 0票数 -1

与其他文件相比,如何替换文件中的列值?

我有两个文件test1.csv和test2.csv;如果test1.csv的值为“符号*”,则需要替换test1.csv中的empdep列。第二个文件test2.csv具有替换“符号*”所需的值。

注意:我使用的是ksh和test1.csv大约有2,048,576行,test2.csv有10000行。

test1.csv

代码语言:javascript
复制
empname,place,empdep
aaaa,city1,001
bbbb,city2,sign-1
dddd,city1,005
ffff,city5,sign-2
hhhh,city7,sign-1

test2.csv

代码语言:javascript
复制
empname,new
aaaa,001
bbbb,002
cccc,003
dddd,005
eeee,006
ffff,007
gggg,008
hhhh,009

预期结果:

代码语言:javascript
复制
empname,place,empdep
aaaa,city1,001
bbbb,city2,002
dddd,city1,005
ffff,city5,007
hhhh,city7,009
EN

回答 1

Unix & Linux用户

发布于 2020-07-26 17:59:39

代码语言:javascript
复制
csv-merge -N t1 -p test1.csv -N t2 -p test2.csv | 
csv-sqlite -T 'select t1.empname, t1.place, case when t1.empdep like "sign%" then t2.new else t1.empdep end as empdep
from t1 left join t2 on t1.empname = t2.empname'

csv-merge和csv-sqlite来自https://github.com/mslusarz/csv-nix-tools

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/579192

复制
相关文章

相似问题

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