比较不同文件中的列并打印那些不匹配的列

2024-04-23

我有两个文件,file1 和 file2。我想将 file1 的几列 - $1,$2 ,$3 和 $4 与 file2 的几列 $1,$2, $3 和 $4 进行比较,并打印 file2 中与 file1 中任何行都不匹配的那些行。

E.g.

file1

aaa bbb ccc 1 2 3
aaa ccc eee 4 5 6
fff sss sss 7 8 9

file2

aaa bbb ccc 1 f a
mmm nnn ooo 1 d e
aaa ccc eee 4 a b
ppp qqq rrr 4 e a
sss ttt uuu 7 m n
fff sss sss 7 5 6

我想要作为输出:

mmm nnn ooo 1 d e
ppp qqq rrr 4 e a
sss ttt uuu 7 m n

我已经看到这里提出的问题,要求找到那些匹配的内容并打印它们,但反之亦然,那些不匹配的内容。

谢谢你!


使用以下脚本:

awk '{k=$1 FS $2 FS $3 FS $4} NR==FNR{a[k]; next} !(k in a)' file1 file2

k是列的串联值1, 2, 3 and 4,由以下分隔FS (see comments https://stackoverflow.com/questions/42165608/compare-columns-from-different-files-and-print-those-that-do-not-match/42165712?noredirect=1#comment71502983_42165712),并将用作搜索数组中的键a later. NR==FNR is true在读的时候file1。我正在创建数组a索引为k在读的时候file1.

对于剩余的输入行,我检查!(k in a)如果索引不存在于a。如果评估结果为true awk将打印该行。

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

比较不同文件中的列并打印那些不匹配的列 的相关文章

  • Linux 上的 头文件在哪里?为什么我找不到 ? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在Linux中实现C的getch 函数 https stackoverflow com questions 3276546 how to implement getch function of c
  • Qt 的 sysroot 和前缀选项的实际示例是什么

    我正在查看可以运行的所有选项configureQt 提供的脚本 特别是 qt everywhere opensource src 5 2 0 经过大量搜索后 我确定这些东西充其量记录很少 所以我希望我能得到一些帮助 当我查看描述时prefi
  • 如何在Linux中为特定程序设置进程ID

    我想知道是否有某种方法可以在运行某些应用程序之前强制使用 Linux 的某些特定进程 ID 我需要提前知道进程ID 实际上 有一种方法可以做到这一点 自内核 3 3 设置了 CONFIG CHECKPOINT RESTORE 在大多数发行版
  • Linux 上的 Chrome - 查询浏览器以查看打开了哪些选项卡?

    我在 Ubuntu Linux 上运行 Chromium 开源 chrome 版本 我可以编写一个程序来查看我打开了哪些选项卡吗 我想编写一个程序来监控我在事情上花费了多少时间 是否有命令行程序 某种调用 chromium browser
  • 如何在 Linux 中检测通过 GUI 登录的用户

    我想在我的程序中捕获通过 GUI 登录的用户名 我的程序作为守护进程从 root 登录运行 如果非 root 用户通过 GUI 登录 我的程序应该会收到通知 我正在粘贴我当前的程序 该程序调用一个 perl 脚本 利用系统调用来检查当前登录
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 编译错误:linux/module.h:没有这样的文件或目录

    我写了一个简单的模块 define KERNEL define MODULE include
  • Java Linux 非阻塞套接字超时行为

    我有一个 Java 非阻塞服务器 它跟踪选择器中的所有套接字通道 然后我与服务器建立 500 个连接并定期发送数据 服务器接收到的每条数据都会回显给客户端 问题来了 测试工作了几个小时 然后突然逐渐地 服务器管理的所有套接字在尝试读取数据时
  • 为什么我的 Linux 应用程序引入了错误的 .so 库?

    我正在构建一个使用 NetCDF C 库的应用程序 并且 NetCDF 正在引入 HDF 4 库 然而 它正在拉动wrongHDF 4 库 我的应用程序的链接方式如下 apps1 intel bin icpc gxx name apps1
  • 如何尽可能快地输出固定缓冲区?

    示例代码 include
  • 即使退出命令后,Shell 脚本仍继续运行

    我的shell脚本如下所示 bin bash Make sure only root can run our script EUID ne 0 echo This script must be run as root 1 gt 2 exit
  • 如果specfile中的某些条件不满足,如何中止rpm包的安装?

    还有一些事情Requires标签不满足 所以我写了一个脚本来验证这些东西 但是我把它们放在哪里呢 如果没有找到 那么我想退出安装 提示用户在尝试再次安装此 rpm 之前执行这些步骤 writing exit 1 in installtag
  • Azure Nvidia 中的 apt-update 出现公钥错误

    我在 AZURE 上启动了 NVIDIA VM 并尝试使用进行更新sudo apt update但给出错误 Hit 2 http azure archive ubuntu com ubuntu focal InRelease Hit 3 h
  • 启动jetty服务器时出现NoClassDefFoundError

    我正在尝试在码头服务器中托管我的网络应用程序 spring 我将 war 文件复制到 jetty 服务器中的 webapp 文件夹中 我并不是想嵌入jetty服务器 而是试图在jetty内托管应用程序 如tomcat 我没有安装jetty
  • 在 LINUX 上测量 TLB 未命中的命令

    有人可以指导我使用一个命令来测量 LINUX 上的 TLB 未命中吗 是否可以将轻微页面错误视为 TLB 未命中 您可以使用perf去做这个 前提是你的CPU支持 Use perf list了解可用的计数器 当我拿到这个列表并查找 TLB
  • 从命令输出中设置 GDB 中的环境变量

    我试图在挑战中利用缓冲区溢出 缓冲区从环境变量中获取其值 在 GDB 中 我知道您可以使用以下命令设置环境变量 set environment username test 但是我需要传递用户名变量特殊字符 所以我需要执行以下操作 set e
  • 保护一个保存 MySQL 数据库的简单 Linux 服务器?

    这是一个初学者问题 但我浏览了该网站上的许多问题 但没有找到简单直接的答案 我正在设置一个运行 Ubuntu 的 Linux 服务器来存储 MySQL 数据库 该服务器尽可能安全非常重要 据我所知 我主要担心的是传入的 DoS DDoS 攻
  • 用于列出用户和组的 Python 脚本

    我正在尝试编写一个脚本 在自己的行上输出每个用户及其组 如下所示 user1 group1 user2 group1 user3 group2 user10 group6 etc 我正在为此用 python 编写一个脚本 但想知道如何做到这
  • 配置错误:无法链接到 boost_system

    我正在尝试在 Debian 上安装一个软件包 足球模拟器 2d 当我进入目录并运行时 configure 我得到以下信息 reza debian soccer rcssserver 15 0 1 configure checking for
  • 验证 BASH 脚本时出现问题 [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试验证 bash 脚本时出现代码 lint 错误 bin bash if eq 0 then printf No argum

随机推荐