如何检查列的值是否位于其他文件中两列的值之间并从 Unix 中的列中打印相应的值?

2024-04-13

我有两个文件要比较。我找到了如何比较列并根据条件进行打印。我手头的问题是,我必须检查 file1 中的 column[2] 的值是否位于 file2 中定义为两列范围 col [2] col[3] 的值之间。如果这是真的,那么我应该在 file1 中打印文件 2 的列 [4]。

file1:

scaffold1_size11    12
scaffold2_size22    26
scaffold3_size33    67

file2:

scaffold1_size11    1   10  Os01
scaffold1_size11    12  20  Os08
scaffold1_size11    29  59  Os07
scaffold2_size22    17  24  Os09
scaffold2_size22    27  38  Os09
scaffold2_size22    39  60  Os10
scaffold2_size22    67  78  Os10
scaffold3_size33    15  27  Os03
scaffold3_size33    29  62  Os08
scaffold3_size33    64  78  Os02
scaffold3_size33    80  98  Os01

期望的输出:

scaffold1_size11    12  Os08
scaffold2_size22    26
scaffold3_size33    67  Os02

这应该怎么做呢?


这是一个可以完成您想要的操作的 shell 脚本。它使用 awk 将 file2 转换为另一个 awk 脚本 (tmp.awk),该脚本又过滤 file1。

awk '{ a[$1] = a[$1] "$2 >= " $2 " && $2 <= " $3 " ? \"" $4 "\" : "; } END { for (i in a) print "$1 == \"" i "\" { print $0 \"\\t\" (" a[i] "\"\"); }"; }' file2 > tmp.awk
awk -f tmp.awk file1

Notes:

  • file1 中的重复行会导致输出中出现重复行。如有必要,将结果通过管道传输至uniq or sort -u.
  • 此方法基于以下假设:通常 file2 相对较小(与可能较大的 file1 相比);如果不是,那么这种方法的性能可能会很差。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查列的值是否位于其他文件中两列的值之间并从 Unix 中的列中打印相应的值? 的相关文章

随机推荐

  • 在 Python 3.6+ 中按值对字典进行排序

    我一直在寻找一种用Python中的值对字典进行排序的方法 经过几次尝试 结果如下 a
  • 与 Derby 有其他连接(只读)

    我想要做什么 我的应用程序与 Derby DB 具有完整连接 并且我想并行地浏览数据库 只读 使用不同的工具 我不确定 Derby 在内部实际上是如何工作的 但我知道我只能有 1 个到 Derby DB 的活动连接 但是 由于数据库仅由硬盘
  • 仅包含 1 个数字的示例[重复]

    这个问题在这里已经有答案了 我正在尝试创建一些模拟数据 为了创建聚类数据 我已指定处方者是否在一个或多个本地卫生区域 LHA 工作 现在 我正在尝试根据患者的 LHA 为患者指定一名处方医生 其代码位于以下代码块中 for i in seq
  • 从 XML 创建实体

    我有以下 XML 结构
  • Django 中的脏字段

    在我的应用程序中 我需要在保存模型时保存更改的值 旧的和新的 有示例或工作代码吗 我需要这个来预先审核内容 例如 如果用户更改了模型中的某些内容 那么管理员可以在单独的表中查看所有更改 然后决定是否应用它们 我发现阿明的想法非常有用 这是我
  • Underscore.js - 在嵌套 Json 中进行过滤

    我想获取所有值 其中category id 1 所以我应该得到 2 个结果 我的 JSON 看起来像这样 var test id 1 name name1 value value1 category id 1 name category1
  • 不同用户类型的 Firebase Auth

    我正在开发一个有两个应用程序的项目 一个用于 请求者 用户 一个用于 响应者 用户 并且我目前正在使用 Firebase 进行身份验证 用户使用电子邮件 密码组合登录 这是问题的根源 问题在于用户冲突 因为身份验证模块连接到 Firebas
  • 如何在 TinyMCE 4 中创建一个增加字体大小的按钮

    有没有人设法在 TinyMCE 4 中创建一个按钮 该按钮会将所选文本的字体大小增加 例如 1px 我遇到的问题是获取选定的文本 无论它是否已经在跨度中 我愿意修改TinyMCE源代码 感谢您的任何想法 你不需要修改源代码 你可以创建一个插
  • WooCommerce 仅显示已购买的商品

    所以我在网上查了很多资料 但找不到解决方案 基本上我想做的是显示用户在商店中购买的所有产品的产品循环 就像显示普通产品一样 如果你还是不明白 也许这会帮助你明白我的意思 这是 WooCommerce 文档中的示例产品循环 ul class
  • 在移动设备中使用固定背景图像滚动时出现滞后

    我想要一个具有固定背景图像 大约 46k 的网站 该图像可以在我的 PC 浏览器上运行 然而 当在我的移动浏览器上滚动时 重绘背景图像需要大约一秒钟的时间 有什么想法可以解决这个问题吗 谢谢 这是我的CSS html body backgr
  • 如何获取 DLL 或 EXE 的文件描述

    我正在创建一个程序 其中之一是控制服务 我正在尝试以类似于中列出的方式列出服务msconfig 下面第一个窗口 我找到了注册表中列出的服务的位置 在 Vista 和 Win7 中 DisplayName 和 Description 通常是引
  • 无法将 SonarQube 分析结果与 VSTS 集成

    我正在 VSTS 中使用准备 运行和发布分析任务来运行 SonarQube 分析并发布结果以构建摘要 前两个步骤成功执行 但 发布分析 任务失败 因为它无法获取分析 ID 的任务 我收到以下错误消息 无法获取 ID AWE9 wu8 fbf
  • Swift:是否可以向协议添加协议扩展?

    假设我有两个协议 protocol TheirPcol protocol MyPcol func extraFunc 我想做的是为 TheirPcol 创建一个协议扩展 它可以让extraFunc 从事任何符合 TheirPcol 的事情
  • 多功能 SAM 模板的推荐项目结构

    我有一个新项目 需要相对少量的服务 可能是 10 个或更少 因此将每个服务放在单独的项目存储库中并不经济 每项服务都将通过 SAM 模板定义为 AWS Serverless Function 我的问题是 组织或构建这样一个项目的推荐方法是什
  • ag-grid - 删除具有无限行模型的行

    我正在尝试使用具有无限行模型和分页功能的网格来删除行 我不确定如何删除特定行并更新内部模型 而无需刷新网格 从而发出新的 ajax 请求 我已经读过这个线程 https github com ag grid ag grid issues 1
  • 将单独的年份和月份列合并为单个日期列

    我有一个像这样的数据框 df code year month 1 YYOOGG 2011 8 2 YYOOGG 2011 1 3 YYOOGG 2011 4 4 YYOOGG 2011 3 5 YYOOGG 2011 12 6 YYOOGG
  • 在 OS X 10.11 El Capitan、macOS 10.12 Sierra、macOS 10.13 High Sierra (< 10.13.3) 上安装 pecl 和 pear

    所以它看起来像新的 系统完整性保护 lockdown http arstechnica com apple 2015 09 os x 10 11 el capitan the ars technica review 8 usr 以及其他目录
  • 带有标题和子标题的导航抽屉菜单项

    我有一个导航抽屉原型 我们有相同的标题和副标题 我正在使用菜单组来包含标题 1 只想为导航抽屉添加子标题或帮助文本 2 想要自定义图标大小以适合整个标题和子标题 如下图所示
  • CMake:如何禁用单个 *.cpp 文件的优化?

    我想禁用 CMake 项目中单个 cpp 文件的优化 我发现 CMake 提供了以下功能来实现此目的 SET SOURCE FILES PROPERTIES FILE PROPERTIES COMPILE FLAGS O0 然而 这似乎对我
  • 如何检查列的值是否位于其他文件中两列的值之间并从 Unix 中的列中打印相应的值?

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