根据匹配的行合并两个csv文件并在linux中添加新列

2024-01-16

我正在使用 java 开发一个应用程序,但为此我需要一个按顺序排列的 csv 文件。我对linux不太了解,但想知道是否有某种方法可以将csv文件合并为所需的格式。

我有两个 csv 文件,其中包含数十万条记录。示例如下:

name,Direction,Date
abc,sent,Jan 21 2014 02:06 
xyz,sent,Nov 21 2014 01:09
pqr,sent,Oct 21 2014 03:06  

and

name,Direction,Date
abc,received,Jan 22 2014 02:06
xyz,received,Nov 22 2014 02:06

因此,第二个 csv 文件将包含文件 1 的一些记录。我需要的是一个新的 csv,如下所示:

name,Direction,Date,currentDirection,receivedDate
abc,sent,Jan 21 2014 02:06,received,Jan 22 2014 02:06
xyz,sent,Nov 21 2014 01:09,received,Nov 22 2014 02:06
pqr,sent,Oct 21 2014 03:06

需要根据column1中匹配的数据添加列(第4列和第5列)。如果第二个文件中没有匹配的数据,则列应为空,如上所示。

那么linux中有没有bash命令可以实现这一点呢?


awk 可能适合你:

kent$  awk -F, -v OFS="," 
       'BEGIN{print "name,Direction,Date,currentDirection,receivedDate"}
        NR==FNR&&NR>1{a[$1]=$0;next}
        FNR>1{printf "%s%s\n",$0,($1 in a?FS a[$1]:"")}' 2.csv 1.csv
name,Direction,Date,currentDirection,receivedDate
abc,sent,Jan 21 2014 02:06,abc,received,Jan 22 2014 02:06
xyz,sent,Nov 21 2014 01:09,xyz,received,Nov 22 2014 02:06
pqr,sent,Oct 21 2014 03:06

update

kent$  awk -F, -v OFS="," 'BEGIN{print "name,Direction,Date,currentDirection,receivedDate"}
        NR==FNR&&NR>1{a[$1]=$2 FS $3;next}
        FNR>1{printf "%s%s\n",$0,($1 in a?FS a[$1]:"")}' 2.csv 1.csv 
name,Direction,Date,currentDirection,receivedDate
abc,sent,Jan 21 2014 02:06,received,Jan 22 2014 02:06
xyz,sent,Nov 21 2014 01:09,received,Nov 22 2014 02:06
pqr,sent,Oct 21 2014 03:06
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据匹配的行合并两个csv文件并在linux中添加新列 的相关文章

  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • C 有标准的队列实现吗?

    是否有 C 语言 附带 的队列数据结构实现 或者我必须开发自己的队列数据结构实现 这是一个学校项目 因此我必须使用标准 gcc 安装中存在的东西 或者必须自己实现一个 其他通用数据结构 如链表 堆栈等 又如何呢 尝试这个 Unix 附带了几
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • 使用 shell 脚本将行附加到 /etc/hosts 文件

    我有一个新的 Ubuntu 12 04 VPS 我正在尝试编写一个安装脚本来完成整个 LAMP 安装 我遇到问题的地方是在 etc hosts文件 我当前的主机文件如下所示 127 0 0 1 localhost Venus The fol
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • execv() 和 const 性

    我经常使用execv 函数在 C 中 但如果某些参数在 C 字符串中 则令我烦恼的是我无法执行此操作 const char args 4 args 0 usr bin whatever args 1 filename c str args
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https

随机推荐

  • 用于在原子编辑器中将选择内容转换为大写(或小写)的键盘快捷键

    在 Atom 编辑器中将当前选定的文本转换为大写 或小写 的键盘快捷键是什么 在 Windows 和 Linux 上 Ctrl K then Ctrl U for uppercase Ctrl K then Ctrl L for lower
  • GetSystemService DOWNLOAD_SERVICE 处于非活动状态

    在非活动类中的简单方法中 我使用代码 mgr DownloadManager mContext getSystemService DOWNLOAD SERVICE 在非活动类中 我的构造函数如下所示 public Download23 Co
  • Gradle - 如何从命令行检测 --debug 标志?

    我有一个正在执行命令的任务 我需要更改传递给命令的参数 具体取决于我是否这样做 gradlew debug myTask or gradlew myTask 我认为这就像这样做一样简单 project logger isEnabled Lo
  • UIDatePicker的minimumDate和maximumDate可以包含时间吗?

    需要一个具有特定最大和最小日期的 UIDatePicker和时间 目前 NSDatePicker minimumDate 和 maximumDate 似乎只考虑日期 处理这个问题的正确方法是什么 NSDates 包含日期和时间 来自文档 N
  • 为Android编译imagemagick

    我正在尝试编译这个项目https github com lilac Android ImageMagick https github com lilac Android ImageMagick 要生成 android magick so 我
  • 单色黑白位图

    我正在 Android 上工作 将从相机捕获的彩色位图转换为黑白单色图像 没有灰色 我有几种灰度转换方法 但我无法将图像转换为黑白格式 有没有什么方法可以将位图转换成这种格式 一种可靠的方法是平均阈值位图 该方法描述于这张纸 http ww
  • 迭代 HashSet 最快/最安全的方法是什么?

    我对 C 还很陌生 但通过论坛帖子注意到使用HashSet代替List在特定情况下 我当前的情况并不是将大量数据存储在单个List完全正确 但我不必经常检查它的成员 问题是我确实也需要迭代它 但它们存储或检索的顺序实际上并不重要 我已经读到
  • 以编程方式更改 Windows 中的打印机首选项

    我编写了一个为新用户安装多台打印机的脚本 我想更改其中一些设置 以便它们可以在页面的双面打印 我相信这涉及使用 printui 修改属性 但是它可能需要 VB 脚本或可能需要另一种 NET 语言 我会使用 VB C 或 IronPython
  • Axis2 会话管理

    我正在axis2中构建一个小型web服务 自下而上 我编写java类并让eclipse wtp生成服务 我想使用会话 以便用户可以使用用户名登录并通过 如果数据库中存在该用户名 而不是在会话上下文中使用 Web 服务 坦白说 我不知道从哪里
  • loader 和 AsyncTask 有什么区别? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道 Android loader 和 AsyncTask 之间的区别 这是 Loader 上的演示 package com android
  • 处理 Datomic 中存储的无序消息?

    背景 在分布式系统中 消息可能会以无序的方式到达 例如 如果消息 A 在时间 T1 发送 消息 B 在时间 T2 发送 则有可能在 A 之前接收到 B 例如 如果 A 是诸如 CustomerRegistered 的消息而 B 是 Cust
  • iOS7 中奇怪的 UITabBar 颜色不一致

    我使用的是 iOS 7tintColor and barTintColor属性来为我的颜色着色UITabBar在 UITabBarController 的子类中使用以下代码 UITabBar appearance setBarTintCol
  • 在 OpenJdk 中,如何使用appendedfontpath属性设置字体目录

    我试图让我的应用程序使用 OpenJdk 安装中特定位置的字体附加字体路径财产 但它对我不起作用 jre1 8 0 121 1 bin java Dappendedfontpath usr lib fonts jar lib songkon
  • 当 URL 中不存在可选参数时找不到 Web API 操作

    请帮忙 我必须更改 Web API 的路由才能使用 URL 中的方法 public class RouteConfig public static void RegisterRoutes RouteCollection routes rou
  • 防止引导工具提示在单击时隐藏

    我想防止工具提示在我单击它时隐藏 除了无论我点击 body 时它都应该隐藏它 即使在选项卡上 工具提示也应该起作用 jsfiddle http jsfiddle net C5GBU 41 http jsfiddle net C5GBU 41
  • Blade.php 方法将结果输出到表单

    我目前正在使用 Laravel 4 2 框架和 twitter bootstrap 设计一个网站 我已经设置了我的master blade php文件 在每个页面的顶部显示一个导航栏 基本上 如果用户登录 我想显示一个导航栏 其选项与用户未
  • 如何将一列中的数据分成两列?

    我最近刚刚开始学习 MS Access 和 SQL Server 中的 SQL 所以我的知识非常有限 但我正在寻找有关 MS Access 中查询的帮助 我知道如何将 2 列合并为 1 列 并用逗号或我想要的任何符号分隔最终结果 但是 我该
  • 错误:找不到您尝试购买的商品

    我是一名安卓初学者 我创建了一个测试应用程序 它只有一个按钮 当您单击它时 它会启动应用内购买 几天前还可以用 但现在不行了 我还检查了其他相关帖子 我尝试了所有 测试帐户 和 活动应用内产品 方法 但它仍然给我相同的错误消息 另外 我尝试
  • 有没有办法更改未使用 basicConfig 配置的记录器对象的文件模式?

    如果我使用 logger logging getLogger Name 创建记录器对象 我无法将文件模式从追加 a 更改为写入 w 如果我将根记录器与 basicConfig 一起使用 则可以 但是当我想要的只是从 DEBUG 级别开始的我
  • 根据匹配的行合并两个csv文件并在linux中添加新列

    我正在使用 java 开发一个应用程序 但为此我需要一个按顺序排列的 csv 文件 我对linux不太了解 但想知道是否有某种方法可以将csv文件合并为所需的格式 我有两个 csv 文件 其中包含数十万条记录 示例如下 name Direc