首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用awk连接两个csv,并使用键列编写另一个csv

如何使用awk连接两个csv,并使用键列编写另一个csv
EN

Unix & Linux用户
提问于 2020-01-04 06:09:15
回答 1查看 224关注 0票数 0

我有两个CSV有以下数据,

file1.csv:-

代码语言:javascript
复制
path(S1),filename,timestamp(S1),memory(S1)  
xx/APS50CC2,APS50CC2,23-09-2019,45  
yy/APS50CC3,APS50CC3,18-09-2019,25

file2.csv :-

代码语言:javascript
复制
path(S2),filename,timestamp(S2),memory(S2)
mm/APS03CR1,APS03CR1,23-09-2019,200
zz/APS50CC2,APS50CC2,18-09-2019,55

预期产出

output.csv :-

代码语言:javascript
复制
filename,path(S1),timestamp(S1),memory(S1),path(S2),timestamp(S2),memory(S2)
APS50CC2,xx/APS50CC2,23-09-2019,45,zz/APS50CC2,18-09-2019,55
APS50CC3,yy/APS50CC3,18-09-2019,25,Not found,Not found,Not found
APS03CR1,Not found,Not found,Not found,mm/APS03CR1,23-09-2019,200

我已经尝试过join命令并运行了,它可以很好地工作在较小的输入集上。但是当我运行关于500000+记录的时候,它会产生错误,所以我不想使用join,我想用awk来尝试它。

我对awk有点陌生,请帮我解决语法问题。这里连接的关键是第2列,即filename

EN

回答 1

Unix & Linux用户

发布于 2020-01-11 14:25:33

使用Miller (https://github.com/johnkerl/miller)并运行

代码语言:javascript
复制
mlr --csv join --ul --ur -j filename -f file1.csv \
then unsparsify --fill-with "Not found" \
then reorder -f "filename","path(S1)","timestamp(S1)","memory(S1)","path(S2)","timestamp(S2)","memory(S2)" file2.csv

你将会有

代码语言:javascript
复制
+----------+-------------+---------------+-------------+---------------+------------+--------------+
| filename | path(S1)    | timestamp(S1) | path(S2)    | timestamp(S2) | memory(S2) | memory(S1)   |
+----------+-------------+---------------+-------------+---------------+------------+--------------+
| APS03CR1 | Not found   | Not found     | mm/APS03CR1 | 23-09-2019    | 200        | Not found    |
| APS50CC2 | xx/APS50CC2 | 23-09-2019    | zz/APS50CC2 | 18-09-2019    | 55         | 45           |
| APS50CC3 | yy/APS50CC3 | 18-09-2019    | Not found   | Not found     | Not found  | 25           |
+----------+-------------+---------------+-------------+---------------+------------+--------------+

我知道这不是awk,但是Miller是另一个很好的结构化文本工具

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

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

复制
相关文章

相似问题

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