shell 脚本中的 AWK - 如何根据共享密钥(2 个公共字段)比较和合并两个文件?

2024-01-11

有人可以帮忙比较两个文件吗? 我已经使用了下面的命令,但我无法成功,

awk -F, 'NR == FNR {a[$1,$2];下一个} (($1,$2) in a )' temp1.dat temp2.​​dat

这是我的需要, 需要比较以下两个 dat 文件中的前两个字段,并将结果按预期合并到 file3 中(第一个字段、第二个字段、temp1.dat 的 3 字段、temp2.​​dat 的 3 字段)

文件1:temp1.dat

A, AB,100
B,BB,200
C,CC,300

文件2:temp2.​​dat

A,AB,10
C,CC,30
D,DF, 4

文件3:输出

A, AB,100,10
C,CC,300,30

awk -F, 'BEGIN{OFS=","}FNR==NR{a[$1$2]=$3;next}($1$2 in a && $3=$3","a[$1$2])' file2 file1

测试如下:

> cat file1
A,AB,100
B,BB,200
C,CC,300
> cat file2
A,AB,10
C,CC,30
D,DF,4
> awk -F, 'BEGIN{OFS=","}FNR==NR{a[$1$2]=$3;next}($1$2 in a && $3=$3","a[$1$2])' file2 file1
A,AB,100,10
C,CC,300,30
> 
  • FNR==NR{a[$1$2]=$3;next}应用于第一个文件file2
  • 它说直到FNR==NR执行代码块。
  • FNR=当前文件的行号
  • NR= 两个文件总行数。
  • 因此,在上述语句之后,索引为的关联数组为$1$2和价值为$3.
  • Now ($1$2 in a && $3=$3","a[$1$2])这执行的是FNR!=NR.其中检查索引 $1$2 是否作为数组中的索引存在,然后第二个条件是将 file1 的第三个字段更改为$3=$3","a[$1$2]so now $0包含共同点($1$2) 更改了其中第三个字段的行。

也必须为四个文件编写类似的逻辑。

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

shell 脚本中的 AWK - 如何根据共享密钥(2 个公共字段)比较和合并两个文件? 的相关文章

  • 如何让“grep -zoP”单独显示每个匹配项?

    我有一个此表格的文件 X this is the first match blabla X this is the second match and here we have some fluff 我想提取 X 之后和相同标记之间出现的所有
  • 在bash中,是否有相当于“错误消息”的东西

    在 perl 中 您可以使用错误消息退出die some msg bash 中是否有等效的单个命令 现在 我正在使用命令来实现这一点 echo some msg exit 1 你可以很容易地自己推出 die echo 1 gt 2 exit
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • 了解多个进程的并发文件写入

    从这里 UNIX 中文件追加是原子的吗 https stackoverflow com questions 1154446 is file append atomic in unix 考虑多个进程打开同一个文件并向其追加内容的情况 O AP
  • SCP 权限被拒绝(公钥)。仅当在目录上使用 -r 标志时才在 EC2 上

    scp r Applications XAMPP htdocs keypairfile pem uploads ec2 user publicdns var www html 其中 uploads 是目录 返回权限被拒绝 公钥 Howeve
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 使用 posix shell 测试字符串中的正则表达式

    如何测试字符串是否与特定字符串匹配正则表达式与基本 无 bash 或任何其他 posix shell 脚本 在 if 语句中 您可以使用expr在 POSIX shell 中计算正则表达式的命令 s Abc expr s alpha 3 e
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 如何在 shell 脚本中操作 $PATH 元素?

    有没有一种惯用的方法从类似 PATH 的 shell 变量中删除元素 这就是我想要的 PATH home joe bin usr local bin usr bin bin path to app bin and remove or rep
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • 从 shell 命令调用 SOAP 请求

    我使用curl 向Web 服务发送SOAP 请求 并使用shell 脚本获取响应 请在下面找到我正在使用的命令 curl H Content Type text xml charset utf 8 H SOAPAction d sample
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is

随机推荐

  • 如何使用for循环减少编译时间

    我有下面的 R 代码 客观的 我正在尝试检查中存在的字符串kind对象是由以下内容组成的word通过迭代和比较两个对象的角色定位来识别对象 如果它是另一个的复合 则返回正值 否则返回负值 问题陈述 如果 kind 对象值在每个字符串中包含最
  • 如果当前阶段有任何作业,如何动态引用 Azure Pipelines 中的先前作业

    我正在尝试设置一个 azure yaml 管道 该管道使用两个部署模板来执行两个相应的作业 测试和部署 每个阶段的作业应按顺序运行 因为测试作业会创建部署作业使用的工件 这很好用 但是 对于一种环境 我将部署分为两个阶段 一个阶段仅运行测试
  • iOS中通过处理cookie来维护Session信息

    我是 iOS 开发新手 我正在使用 NSURLSession 来管理会话信息 下面是我用来调用任何服务器 API 的示例代码 NSURLSessionDataTask task NSURLSession sharedSession data
  • 如何将 DataGridViewComboBoxColumn 绑定到返回列表的对象的属性/方法?

    我有一个具有多个属性的自定义对象 其中一个属性返回一个列表 这是该对象的代码 public class SearchResult private int eventId private String eventTitle private i
  • 在子域上安装 GitLab

    我正在尝试在子域上安装 GitLab 我对网络服务器之类的东西不是很熟悉 知识很少 我目前通过以下方式连接到子域ssh email protected cdn cgi l email protection在 Mac 的终端上 然后我ls到子
  • 如何中断 Hover 的 handlerOut

    我有以下情况 我有一个对象 我们称之为 按钮 当您将鼠标悬停在 按钮 上时 它会使另一个对象 信息 向下滑动 当然 当你的鼠标离开Button时 Info就会向上滑动并消失 但是 Info 有一个链接 用户可能想要单击它 我可以延迟信息向上
  • 2 个向量的样本协方差

    我正在尝试计算这两个向量之间的样本协方差 我定义了一个带有两个输入变量的函数 不知道是否正确 我的样本协方差公式也无法运行 谁能帮我用R写出来 xv c 1 5 5 7 8 4 2 2 7 5 4 8 9 yv c 0 1 1 5 0 8
  • Android 2.0:支持Actionbar库(appcompat v7支持库无资源):找不到资源@style/Theme.AppCompat.Light.DarkActionBar

    我跟着http developer android com guide topics ui actionbar html http developer android com guide topics ui actionbar html在
  • Python OrderedDict 与 dict() 比较

    这件事让我完全困惑不解 asset hist for key host val hist list in am output asset history items for index hist item in enumerate val
  • Gist (gist.el / Emacs) -- 在创建时设置“描述”

    默认行为gist region就是离开描述空白的 要设置描述 需要切换到gist list缓冲然后使用该函数gist edit current description设置描述 我希望能够设置描述在创建要点的同时 无需切换到gist list
  • php-ffmpeg 获取视频时长

    当我尝试使用 php ffmpeg 包装器和 ffprobe 获取视频的持续时间时 我得到一个巨大的对象 而不仅仅是持续时间 ffprobe FFMpeg FFProbe create ffprobe gt format this gt v
  • WebClient 下载文件已损坏

    我正在尝试使用 C WebClient 下载文件 这是网址 http www czce com cn cn DFSStaticFiles Future 2018 20180821 FutureDataClearParams txt http
  • 如何使用 CSS 网格布局在 CSS 中制作固定列?

    我制作了一个简单的网站 containerdiv 是两个 div 的父级 left and right 通过使用网格布局 https developer mozilla org en US docs Web CSS CSS Grid Lay
  • 为什么需要目标网络?

    我想了解为什么 DQN 中需要目标网络 我正在阅读有关 通过深度强化学习实现人类水平控制 的论文 我了解 Q learning Q learning 是一种基于价值的强化学习算法 它学习状态 动作之间的 最佳 概率分布 从而在一系列时间步长
  • 带有按钮和输入的弹出框 HTML 内容未呈现[重复]

    这个问题在这里已经有答案了 我正在尝试向弹出窗口添加按钮 但它似乎没有呈现 是像我那样做的还是有更好的方法 myinput popover trigger focus container body placement bottom html
  • 将数据库引用传递到路由中不适用于我的 Node / Express 项目

    我正在使用 Node Express 创建一个简单的 REST API 并尝试将路由逻辑与数据库逻辑分开 我在从路线访问数据库时遇到问题 这是我的 server js 代码 var express require express path
  • AngularJS 中的 ExpressJS 变量 - Mean Stack

    我正在构建一个 MEAN 应用程序 我遇到的一个问题是我想让我的用户对所使用的路由进行某种控制 所以我希望我的服务器端代码 expressJS 在我的客户端代码中设置一些变量 本质上 我希望能够从服务器端代码生成客户端 JS 例如 在 PH
  • 附件损坏签名第 2 部分

    我创建了将图像添加到现有 pdf 文档然后对其进行签名的代码 所有这些都使用 PDFBox 请参阅下面的代码 该代码很好地添加了图像和签名 但是 在某些文档中 Acrobat Reader 抱怨 签名字节范围无效 该问题似乎与中描述的问题相
  • 如何与多个翻译单元共享一个静态变量?

    我想将数组设为静态 并且还想在其他翻译单元中引用它 然后我将其定义为static int array 100 并在其他翻译单元中将其声明为extern int array 但是编译器告诉我 static 和 extern 的存储类相互冲突
  • shell 脚本中的 AWK - 如何根据共享密钥(2 个公共字段)比较和合并两个文件?

    有人可以帮忙比较两个文件吗 我已经使用了下面的命令 但我无法成功 awk F NR FNR a 1 2 下一个 1 2 in a temp1 dat temp2 dat 这是我的需要 需要比较以下两个 dat 文件中的前两个字段 并将结果按