AWK - 如何列匹配文件 A 中的多个匹配项与文件 B 中的一个匹配项

2024-01-15

我试图在文件 A 中的第 1 列和文件 B 中的第 2 列之间找到匹配的字符串,并为每个匹配打印文件 A + 文件 B 的整行。问题是文件 A 的第 1 列中有多个具有相同值的字符串,当我使用 awk 解决方案时,它只打印最后一个匹配项而不是所有匹配项。

我尝试使用之前使用过的 awk 解决方案来匹配文件 A 和文件 B 中的唯一值

awk -vOFS='\t' 'NR==FNR{a[$1]=$0;next} ($2 in a) {print a[$2],$0}' file A file B

File A

MLLT3   26.53051423 54.24992354 25.50216856
MLLT3   24.32536694 19.96855016 177.7584507
MLLT3   18.9883621  15.83462512 115.2035222
MLLT3   11.79811105 42.91062427 77.35888553

File B

ENSG00000171843 MLLT3   3.885477052 3.929504522 3.005321522

预期输出:

MLLT3   26.53051423 54.24992354 25.50216856 ENSG00000171843 MLLT3   3.885477052 3.929504522 3.005321522
MLLT3   24.32536694 19.96855016 177.7584507 ENSG00000171843 MLLT3   3.885477052 3.929504522 3.005321522
MLLT3   18.9883621  15.83462512 115.2035222 ENSG00000171843 MLLT3   3.885477052 3.929504522 3.005321522
MLLT3   11.79811105 42.91062427 77.35888553 ENSG00000171843 MLLT3   3.885477052 3.929504522 3.005321522

实际输出:

MLLT3   11.79811105 42.91062427 77.35888553 ENSG00000171843 MLLT3   3.885477052 3.929504522 3.00532152

我对任何解决方案持开放态度,我过去只是使用 awk 来解决此类问题。


由于键在 fileA 中重复,但在 fileB 中不重复,请尝试:

$ awk -vOFS='\t' 'NR==FNR{a[$2]=$0;next} ($1 in a) {print $0,a[$1]}' fileB fileA
MLLT3   26.53051423     54.24992354     25.50216856     ENSG00000171843 MLLT3   3.885477052     3.929504522     3.005321522
MLLT3   24.32536694     19.96855016     177.7584507     ENSG00000171843 MLLT3   3.885477052     3.929504522     3.005321522
MLLT3   18.9883621      15.83462512     115.2035222     ENSG00000171843 MLLT3   3.885477052     3.929504522     3.005321522
MLLT3   11.79811105     42.91062427     77.35888553     ENSG00000171843 MLLT3   3.885477052     3.929504522     3.005321522
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWK - 如何列匹配文件 A 中的多个匹配项与文件 B 中的一个匹配项 的相关文章

  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • bash 支持字边界正则表达式吗?

    我试图在再次添加该单词之前匹配列表中是否存在该单词 以避免重复 我正在使用 bash 4 2 24 并尝试以下操作 foo bmyword b also foo
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 使用带有curl 的内部字段分隔符

    当我做 ls IFS l 我得到了我期望的输出 当我做 curl IFShttp www google com 我不 我是否误解了内部字段分隔符 如何在不使用任何空格字符的情况下运行curl 命令 您需要将变量放在大括号内 否则 shell
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 语法错误:for 循环变量不正确

    我正在尝试编写一个可以在后台调高收音机音量的脚本 bin sh for i 80 i lt 101 i do amixer cset numid 1 i sleep 60 done 但我有问题 alarmclock vol sh 3 ala
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 从 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
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c

随机推荐

  • UIScrollView 内的 UIVIew 反弹回来

    MY app is for iPad using Storyboards with two scenes On one scene I have a UIScrollView that contains a UIVIew It scroll
  • 如何访问Reducer中的Mapper计数器值?

    我想访问reducer中的myCounter my值 public static class Map extends Mapper
  • 在 socket.io 中管理多个选项卡(但同一用户)

    我在使用 socket io 时遇到了一些问题 我不知道如何解决它 我有一个带有登录系统的应用程序 带有 socket io 来管理用户交互 我还有一个数组来管理所有活动的 websocket 会话 该数组存储一对 session id g
  • React Native - 下拉列表中的 z-index 不起作用

    我正在尝试在 React Native 中创建一个基本的下拉菜单 我创建了一个下拉组件 Dropdown import React useState from react import StyleSheet Text View Toucha
  • 如何在AppBar中用图像替换标题

    我怎样才能更换AppBarFlutter 中带有图像徽标的标题 The title属性需要一个Widget 因此您可以将任何小部件传递给它 例如 添加到资源中的图像 Scaffold appBar AppBar title Image as
  • 错误膨胀类 com.google.android.maps.MapView

    我只是遵循一个简单的地图教程http developer android com resources tutorials views hello mapview html http developer android com resourc
  • 根据特定键删除重复项

    得到一个像这样的多维数组 A array 0 gt array rel gt 4 name gt Bar 1 gt array rel gt 2 name gt Bar 2 gt array rel gt 1 name gt Foo 3 g
  • 带有 Google 地图标记的效果和动画

    我想知道如何通过 Google 地图标记创建效果 动画 具体来说 我想在给定的时间后放大 缩小或 淡出 标记 HTML5 可以吗 有没有jquery效果库可以做到这一点 我可以使用地图图块服务器来创建地图图块叠加层并每秒重新生成图块叠加层
  • 使用 LINQ 读取文本文件

    我有一个文件想要读入数组 string allLines File ReadAllLines path to file 我知道我可以遍历数组并找到包含模式的每一行并显示行号和行本身 我的问题是 是否可以使用 LINQ 做同样的事情 嗯 是的
  • 如何在cordova中运行php代码?

    我是 cordova 新手 希望将我现有的应用程序构建与 jquery mobile 和 php 转移到 iOS Android 我对吗 cordova 内部没有 php 解释器 这意味着现有的应用程序无法移植到 cordova 因为 ph
  • Java 如何在结果集中检索超过 100 万行

    我正在对 MYSQL 表执行选择查询 该表有 16 213 156 行和 10 列 但是在建立连接后 代码只执行几分钟 然后抛出错误 线程 Thread 3 中的异常 java lang OutOfMemoryError Java 堆空间
  • 加入范围:has_many:通过关联

    class Users lt ActiveRecord Base has many meetings through gt meeting participations has many meeting participations end
  • 如何使用 php 创建新的 .MDB 文件?

    在我们的内部系统中 我们从 MySQL 数据库为用户 phpexcel 生成了 csv 和 xls 文件 但我的老板询问是否可以创建 mdb 文件 我从未遇到过任何关于动态创建新 MDB 文件的示例 我想知道这是否可能 我无论如何都不是专家
  • 如何使用ajax和jquery动态更新数组表?

    我有两个文件php gettable php和index php 索引文件每隔一秒显示一次gettable php获得的结果 我想在索引中动态更新表的内容 只有新的或更改的值必须更改 使用ajax 我是ajax初学者 请帮帮我 谢谢 获取表
  • PHP Guzzle:空正文响应

    我刚刚开始尝试 guzzle 但我在响应主体上得到一个空字符串 client new Client base uri gt http httpbin org timeout gt 2 0 response client gt request
  • 具有多个描述项的 jQuery 手风琴定义列表

    我似乎无法使用jQuery 手风琴 http jqueryui com demos accordion 具有多个描述项 dd 的定义列表 作者的examples http jquery bassistance de accordion de
  • 有没有一个函数可以将圆的度数移动到0以上?

    我正在 Delphi XE2 中寻找类似于的函数Inc 这允许我从当前的度数中添加 减去一定的度数并产生新的度数 例如 如果我当前有一个点围绕圆 5 度 并且我想减去 10 则不应得到 5 度 而是 355 360 5 与添加过去的 360
  • 将 Yelp API 与 R 结合使用,尝试使用地理坐标搜索业务类型

    尝试使用 R 和库 ROAuth 连接到 yelp API 使用 rauth 模块和地理坐标的很棒的 python 示例 https gist github com phillipjohnson 8889618 https gist git
  • DOSBox 上的 8086 程序集: idiv 指令有错误?

    我正在帮助我的一个朋友调试他的程序 我们将其范围缩小到甚至在这里出现的问题 MODEL small STACK 16 CODE start mov ax 044c0h mov bl 85 idiv bl exit mov ax 4c00h
  • AWK - 如何列匹配文件 A 中的多个匹配项与文件 B 中的一个匹配项

    我试图在文件 A 中的第 1 列和文件 B 中的第 2 列之间找到匹配的字符串 并为每个匹配打印文件 A 文件 B 的整行 问题是文件 A 的第 1 列中有多个具有相同值的字符串 当我使用 awk 解决方案时 它只打印最后一个匹配项而不是所