gpt4 book ai didi

linux - bash:比较两个文件以追加列

转载 作者:太空狗 更新时间:2023-10-29 12:00:38 25 4
gpt4 key购买 nike

我有两个 文件。第一个文件是这样的:

name_service1|||S_SUCCESS||1111111111
name_service1|||S_SUCCESS||1111111112
name_service1|||S_SUCCESS||1111111113
name_service1|||S_SUCCESS||1111111114
name_service1|||S_SUCCESS||1111111115
name_service1|||S_SUCCESS||1111111116
name_service1|||S_SUCCESS||1111111117
name_service1|||S_SUCCESS||1111111118

第二个文件是这样的:

name_service1,20160705,0900
name_service2,20160705,0800

我需要通过 name_service 字段对两个文件进行比较,当字段相同时添加日期和时间;像这样的东西:

name_service1|20160705|0900|S_SUCCESS||1111111111
name_service1|20160705|0900|S_SUCCESS||1111111112
name_service1|20160705|0900|S_SUCCESS||1111111113
name_service1|20160705|0900|S_SUCCESS||1111111114
name_service1|20160705|0900|S_SUCCESS||1111111115
name_service1|20160705|0900|S_SUCCESS||1111111116
name_service1|20160705|0900|S_SUCCESS||1111111117
name_service1|20160705|0900|S_SUCCESS||1111111118

第一个文件很大,所以使用 while read 行并对第一个文件的每一行执行 grep 需要很长时间。第二个文件只有 5 或 6 行。

还有其他方法吗?

问候

最佳答案

使用 bashjointrsed:

join -t '|' -j 1 -o 1.1,2.2,2.3,1.4,1.5,1.6,1.7 -a 1 file1 <(tr ',' '|' < file2) | \
sed 's/|$//'

相同,但没有bash主义:

tr ',' '|' < file2 | \
join -t '|' -j 1 -o 1.1,2.2,2.3,1.4,1.5,1.6,1.7 -a 1 file1 - | \
sed 's/|$//'

关于linux - bash:比较两个文件以追加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38256265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com