BASH:根据公共字段名称连接 2 个 CSV 文件

2024-01-03

我有 2 个 CSV 文件,我需要使用 BASH 连接它们:

file_1.csv columns: 

track_id    
title
song_id 
release 
artist_id   
artist_mbid 
artist_name 
duration    
artist_familiarity  
artist_hotttnesss
year

Sample date in file_1.csv

TRZZZZZ12903D05E3A,Infra Stellar,SOZPUEF12AF72A9F2A,Archives Vol. 2,ARBG8621187FB54842,4279aba0-1bde-40a9-8fb2-c63d165dc554,Delerium,495.22893,0.69652442519,0.498471038842,2001

file_2.csv columns: 

track_id    
sales_date  
sales_count

Sample data in file_2.csv

TRZZZZZ12903D05E3A,2014-06-19,79

文件之间的关系是file_1.track_id = file_2.track_id.

我想创建第三个文件file_3.csv将包含以下列:

file_2.track_id,file_2.sales_date,file_2.sales_count,file_1.title,file_1.song_id,file_1.release,file_1.artist_id,file_1.artist_mbid,file_1.artist_name,file_1.duration,file_1.artist_familiarity,file_1.artist_hotttnesss,file_1.year

我尝试过以下方法:

join -t',' -1 N -1 N file_2.csv file_1.csv >> file_3.csv

and

awk -F, 'NR==FNR{a[$0]=$0;next} ($1 in a){print a[$1]"," > "file_3.csv"}' file_1.csv file_2.csv

虽然file_3.csv创建后,它是一个空文件。 关于如何做到这一点有什么想法吗?

Thanks!


下列join命令应该可以解决问题:

join --header -t',' -j 1 file_2.csv file_1.csv

只需确保您的 CSV 文件在连接字段上排序即可;拥有track_id因为每个文件中的第一个字段使这变得很容易。

您应该在这两个文件中使用测试数据,当您满意该命令正在执行您想要的操作时,您可以针对实际数据运行它并将其输出重定向到file_3.csv.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BASH:根据公共字段名称连接 2 个 CSV 文件 的相关文章

  • ActiveRecord:向包含的 ON 子句添加条件

    我有一个模型报价和另一个历史报价 一个报价有很多历史报价 现在 我想立即加载一组报价的某一天的历史报价 如果存在 为此 我认为我需要将这一天传递给 ON 子句 而不是 WHERE 子句 以便我获得所有报价 即使在给定日期没有历史报价时也是如
  • Android Excel CSV 的 MIME 数据类型是什么?

    我尝试了 text csv 甚至 application vnd ms excel 但 Excel 不会显示在选择列表中 很多其他应用程序也可以 void shareCsv Uri uri Context context Intent in
  • 如何在 Bash 中按自然顺序循环文件?

    我使用以下命令循环目录中的所有文件 for i in fas do some code done 不过 我按这个顺序得到它们 vvchr1 fas vvchr10 fas vvchr11 fas vvchr2 fas 代替 vvchr1 f
  • 从 csv 文件中读取奇数行

    这看起来相当简单 我只需要从 R 中的数据文件中读取奇数行并创建一个新的数据框 我怎样才能实现这个目标 read csv filename csv c TRUE FALSE 怎么运行的 功能read csv用于读取整个文件并返回包含所有行的
  • AWS Athena csv 元数据分隔符在首次查询使用后发生更改

    我想向 athena 查询 s3 csv 文件 源 csv 文件描述 分隔符 system information val1 val2 val3 val4 val5 在此基础上我在 athena 中创建表 Create external t
  • 将多个 csv 文件连接成具有相同标头的单个 csv

    我目前正在使用以下代码导入 6 000 个 csv 文件 带标题 并将它们导出到单个 csv 文件 带单个标题行 import csv files from folder path r data US market merged data
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备
  • 使用脚本从网站中提取电子邮件地址

    给定一个网站 我想知道以编程方式和 或使用脚本的最佳程序是什么 以纯文本形式提取每个页面上存在的所有电子邮件地址 电子邮件受保护 cdn cgi l email protection从该链接和下面的所有站点 递归或直到某个固定深度 使用 s
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • Bash 实例未嵌套在 Dockerfile `RUN` 中

    嵌套 bash 实例会递增 SLVL 环境变量 http tldp org LDP abs html internalvariables html http tldp org LDP abs html internalvariables h
  • Grep 批量 ping

    寻找一种更好的方法来做到这一点 而不是我习惯的 手动 方法 因为这是一个我必须定期经历的过程 我有一系列要 ping 的 IP 从10 0 1 15 to 10 0 50 15 第三个八位位组指的是物理位置 最后一个八位位组指的是该位置处的
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • Rails HABTM 设置、模型对象和 join_table 插入控制器设置

    我有以下设置 1 个产品有多个 Product types 许多 Product types 有 1 种类型 根据我对文档的理解 HABTM 关系 我的模型是 class Product lt ApplicationRecord has a
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • 从实时 tcpdump 捕获中提取唯一的 IP

    我使用以下命令从实时 tcpdump 捕获中输出 IP sudo tcpdump nn q ip l awk print 3 fflush stdout gt gt ips txt 我得到以下输出 192 168 0 100 50771 1
  • 在 macOS 上使用 find 时出现“非法选项”错误

    我试图列出末尾仅带有字母 R 的文件 我用了find在 macOS 终端中如下所示 find type f name R 但我收到消息说illegal option t 第一个参数find是它应该开始寻找的路径 路径 表示当前目录 find

随机推荐

  • 如何将 findbugs @Nonnull 与外部库一起使用?

    我开始使用 findbugs Nonnull and CheckForNull在现有项目上添加注释 以防止 NPE 并且认为它效果很好 我用 Nonnull作为返回类型和参数的默认值 只需添加默认值 就已经发现了一些 NPE 现在我找到了类
  • 代理密钥、合成密钥和人工密钥之间有区别吗?

    代理密钥 合成密钥和人工密钥之间有什么区别吗 我不清楚具体的区别 代理密钥 合成密钥和人工密钥是同义词 技术关键是另一个 它们的意思都是 没有商业意义的主键 它们与自然密钥或业务密钥不同 后者的含义超出了当前系统的范围 例如 考虑 SO 用
  • span 和 label 标签之间的渲染差异是什么?

    所以我理解跨度和标签标签之间的功能差异 但是标签之间似乎也存在渲染差异 我似乎无法弄清楚它是什么 有谁知道span和label之间的渲染差异 谢谢 除了默认的渲染样式 标签有时在某些浏览器中为粗体 之外 重要的区别是标签应该链接到表单字段
  • 在 JavaFX 中使用数据库填充表视图

    我开始学习 javaFX 我需要用数据库中的数据填充表 我在网上阅读了很多代码 但没有找到我想要的东西 我读this http pastebin com S0Fg9jK8但我不知道如何实现最后一个功能 我阅读了一些其他代码来做到这一点 到目
  • Java:实现无符号 128 位整数

    首先我应该问 有谁知道 Java 的当前实现 128b UINT 吗 我需要一些东西来保持自然的基本价值观 即 一个巨大的柜台 我知道 BigIntegers 它很慢而且不可变 128b UINT 有意义 我正在考虑使用一对原始长整型来实现
  • Regex101 与 JavaScript String.match 分歧

    这个正则表达式 w g应该匹配每个单词字符between大括号 相反 我得到了不同的结果Regex101 JavaScript 引擎 https regex101 com r iD4uP6 1 and Chrome 控制台 Regex101
  • MongoEngine - 另一个用户已通过此数据库的身份验证。您必须先退出

    谁能解释一下为什么我收到错误另一个用户已通过此数据库的身份验证 您必须先退出当使用连接到 MongoDB 时Flask Mongo引擎 https github com MongoEngine flask mongoengine from
  • 在 Prolog 中断言数字谓词

    Prolog 中是否有可能断言代表数字的事实 例如 我想使用谓词distance 2并断言诸如distance town1 city2 1200 The distance town1 city2 1200term 是该术语的语法糖 dist
  • 如何引导 log4j 输出,以便不同的日志级别发送到不同的附加程序?

    是否可以将 debug 和 info 输出写入控制台 而 info 输出仅写入某个日志文件 例如 给定以下日志记录 LOG debug fileContent LOG info fileLength 对应的是什么log4j xml看起来像
  • MongoDB,如何对文档进行分组

    我的收藏有这样的数据 code 1 location 1 QUEEN STREET id 1 code 1 location 2 KING STREET id 2 code 2 location 1 QUEEN STREET id 3 co
  • 不请求Window.FEATURE_ACTION_BAR问题

    我正在尝试构建我的应用程序 但没有成功 我尝试了多种方法 但没有任何效果 例外的是 Caused by java lang IllegalStateException This Activity already has an action
  • 如何创建一个不可销毁的实例

    想象一下我有一堂课 TCantBeDestroyed 有人知道如何直接创建一种在两种情况下都不能被销毁的实例 不能被毁坏 免费 CantBeDestroyed Destroy 并且不能被演员摧毁 TObject CantBeDestroye
  • 根据时间序列数据帧的时间列更正日期列中的条目

    我有一个时间序列数据框 它包含三列 日期 时间和值 它看起来像这样 date time value 11 03 2020 1103 5 11 03 2020 0000 10 11 03 2020 0100 6 12 03 2020 0201
  • 层次聚类大稀疏距离矩阵 R

    我试图在非常大的距离上执行 fastclust 但遇到了问题 我有一个非常大的 csv 文件 大约 9100 万行 因此 for 循环在 R 中花费太长时间 其中包含关键字 大约 50 000 个唯一关键字 之间的相似性 当我读入 data
  • sfErrorNotifierPlugin:“默认”上下文不存在

    我已经安装了sfErrorNotifierPlugin 当两个选项reportErrors reportPHPErrorsreportPHPWarnings reportWarnings都设置为false时 一切正常 但我想捕获 PHP 异
  • 删除前导 0 直至小数点

    我想删除小数中的前导零 所以我想要的输出应该是 324 not 0 324 我试过str replaceFirst 0 没用 我也尝试了正则表达式 没有结果 是的 我正在使用 BigDecimal Try this str str repl
  • 发布到数据:url — 有任何用例吗?

    在当前的 HTML5 规范中 可以POST具有数据方案的动作的表单 http www w3 org TR 2011 WD html5 20110525 association of controls and forms html form
  • Android解析json数据并添加搜索功能

    抱歉我的英语不好 我是 android 新手 我将 json 数据解析到 listview 中 现在我想给他添加一个搜索功能 但我有一个问题 当我在 edittext 中输入单词时 然后在 listview 中输入我的项目是重复的 并且项目
  • R 一元运算符重载:风险?

    在我不断寻求避免在一些简单命令中使用括号的过程中 我编写了以下运算符来创建新的图形窗口 我的问题是 除了明显无法在变量 newdev 上执行 not 函数之外 我是否面临 破坏 R 中任何内容的风险 function to overload
  • BASH:根据公共字段名称连接 2 个 CSV 文件

    我有 2 个 CSV 文件 我需要使用 BASH 连接它们 file 1 csv columns track id title song id release artist id artist mbid artist name durati