AWK 关联数组、映射或哈希映射

2024-03-01

假设我有两个文件:

文件1 - 地图.txt

1, 178246
2, 289789
3, 384275
4, 869282

文件2 - 关系.txt

178246, 289789
384275, 178246
384275, 869282

预期结果是:

1, 2
3, 1
3, 4

但我使用以下代码得到的结果是:

awk 'FNR==NR{map[$2]=$1} {$1=map[$1];$2=map[$2];print $0}' map.txt relation.txt

  2,
  1,
  4,

当我像这样交换 map.txt 中的列时,它很困惑:

178246, 1
289789, 2
384275, 3
869282, 4

relation.txt 没有改变

结果变成:

awk 'FNR==NR{map[$1]=$2} {$1=map[$1];$2=map[$2];print $0}' map.txt relation.txt

1,
3,
3,

{$1=map[$1];$2=map[$2];print $0} 附近似乎有问题


awk  -F"[, ]" 'NR==FNR {m[$3]=$1;next};{print m[$1]",",m[$3]}' map.txt relations.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWK 关联数组、映射或哈希映射 的相关文章

  • bash while 循环没有按预期工作

    我知道从技术上讲 它可能会按原样工作 并且这是人们所期望的bash语言 但这不是我所期望和写的 我试图让一切尽可能简单 This is fileA Name Status Networks Image Plans HostName A PA
  • ORM 映射中的“拥有方”是什么?

    具体是做什么的拥有方意思是 一些映射示例的解释是什么 一对多 一对一 多对一 以下文字摘录自描述 一对一在 Java EE 6 文档中 你可以看到这个概念拥有方 in it 定义一个单值关联 另一个具有一对一关系的实体 多重性 通常情况下不
  • 如何检查列的值是否位于其他文件中两列的值之间并从 Unix 中的列中打印相应的值?

    我有两个文件要比较 我找到了如何比较列并根据条件进行打印 我手头的问题是 我必须检查 file1 中的 column 2 的值是否位于 file2 中定义为两列范围 col 2 col 3 的值之间 如果这是真的 那么我应该在 file1
  • 具有特定基数的映射(联结)表之间的联接

    我有一个关于执行特定联接的最有效方法的简单问题 就拿这三张表来说 为了保护无辜 已经改了实名 表 动物 animal id name 1 bunny 2 bear 3 cat 4 mouse 表 标签 tag id tag 1 fluffy
  • grep 匹配的行和字符串位置

    我需要找到一种方法将 grep 匹配的精确坐标从一个文件输出到另一个文件 所以说 模式 包含要匹配的字符串模式列表 搜索 是一个基于行的文本 ASCII 文件 其中包含要搜索的文本 with grep onf patterns search
  • Bash 中的多维关联数组

    我正在尝试创建一个多维关联数组 但需要一些帮助 我已审查过这个SO答案中建议的页面 https stackoverflow com questions 3020713 how to print bash varibles contents
  • 正则表达式用 SED/AWK 替换特定列

    我的数据如下所示 制表符分隔 Organ K ClustNo Analysis LN K200 C12 Gene Ontology LN K200 C116 Gene Ontology CN K200 C2 Gene Ontology 我想
  • 将 CSV 文件拆分为较小的文件但保留标题?

    我有一个巨大的 CSV 文件 有 100 万行 我想知道是否有一种方法可以将此文件拆分为较小的文件 但保留所有文件的第一行 CSV 标题 它似乎split速度非常快 但也非常有限 您不能向文件名添加后缀 例如 csv split l1100
  • 在 PHP 中显示数组值

    因此 我是第一次使用 PHP 并且尝试检索并显示数组的值 经过大量谷歌搜索后 我能找到的唯一方法是print r var dump or var export 然而 所有这些方法都会返回如下所示的内容 a gt apple b gt ban
  • 在 FFmpeg 中使用 -filter_complex amerge 时混合流

    我目前遇到 ffmpeg 及其过滤器之一的问题 我正在尝试将视频的 2 个音频流合并为一个 为此我尝试了这个命令 ffmpeg i home maniaplanet Videos ManiaPlanet 2014 08 21 20 09 1
  • 如何在 iBatis 中映射 List

    我有一堂这样的课 public SomeClass private List
  • 通过 R 中的属性对 SpatialPolygonsDataFrame 进行子集化(即删除多边形)的简单方法

    我想简单地根据 data 数据框中相应的属性值从 SpatialPolygonsDataFrame 对象中删除一些多边形 以便我可以绘制简化 子集化的 shapefile 到目前为止我还没有找到一种方法来做到这一点 例如 假设我想从中删除所
  • 如果字段重复则删除行

    如果第一个字段重复 则寻找 awk 或 sed 单行代码以从输出中删除行 我见过的删除重复行的示例是 awk a 0 a 0 尝试使用它作为基础 但没有运气 我认为将 0 更改为 1 可以解决问题 但似乎不起作用 awk if a 1 0
  • 使用 AWK 或 SED 以及以下标签以逗号分隔

    使用 AWK 或 SED 以及下面使用的标签以逗号分隔 BEGIN AccountID BEGIN CallerID BEGIN Billed Account Attributes 1111111 1111111 1111111 END B
  • 我如何在 ruby​​ 中执行范围正则表达式,例如 awk /start/,/stop/

    我想做一个 AWK 风格的范围正则表达式 如下所示 awk hoststatus file 在 AWK 中 这将打印文件中两个模式之间的所有行 hoststatus host name myhost modified attributes
  • 使用 Sed 或 Awk 进行数据转换 - 名称到标题

    我有以下格式的数据 APP OWNER hari APP AREA Work Business Area AUS APP ID 124080 APP OWNER ari APP AREA Work AUS APP ID 124345 我希望
  • 通过另一个二维数组中的行过滤二维数组的行

    我有两个数组 我正在使用array diff assoc 以获得差异 但它总是返回common set结果中的行 它应该返回new q sets排 我的方法有什么问题吗 样本数据 array1 12 gt new q sets 11 gt
  • 使用 AutoMapper 展开 DTO

    我一直在尝试使用 AutoMapper 来节省从 DTO 到域对象的时间 但是我在配置地图以使其正常工作时遇到了麻烦 并且我开始怀疑 AutoMapper 是否可能是错误的工具工作 考虑这个域对象的示例 一个实体和一个值 public cl
  • 数学 - 映射数字

    如何将 a 和 b 之间的数字线性映射到 c 和 d 之间 也就是说 我希望 2 到 6 之间的数字映射到 10 到 20 之间的数字 但我需要广义的情况 我的脑子炸了 如果您的数字 X 位于 A 和 B 之间 并且您希望 Y 位于 C 和
  • 文本处理问题:删除其中一列不包含特定值的行

    我有一个制表符分隔的文件 如下所示 input sequence match sequence score receptor group epitope antigen organism ASRPPGGVNEQF ASRPPGGVNEQF

随机推荐