`

awk两个文件对比

 
阅读更多

最简单的方式是使用linux的comm命令,但是需要文件有序,comm命令的参数:

-1   不显示只在第1个文件里出现过的列。
-2   不显示只在第2个文件里出现过的列。
-3   不显示只在第1和第2个文件里出现过的列。

comm命令是一个非常简洁的命令,其只有两个参数。不过三个参数也结常要组合使用,我们常用的用法如下:

comm - 12     就只显示在两个文件中都存在的行;
comm - 23    只显示在第一个文件中出现而未在第二个文件中出现的行;
comm - 123  则什么也不显示。
也可以使用awk命令实现
1.同时在file1和file2中的行
awk '{if(ARGIND==1) {val[$0]}else{if($0 in val) print $0}}' file1 file2
2.只在file1中有的行.
awk '{if(ARGIND==1) {val[$0]}else{if($0 in val)  delete val[$0]}}END{for(i in val) print i}' file1 file2

3.只在file2中有的行.
awk '{if(ARGIND==1) {val[$0]}else{if($0 in val)  delete val[$0]}}END{for(i in val) print i}' file2 file1
分享到:
评论

相关推荐

    Linux+Script+CSV+awk+对比两个CSV文件中指定字段差异

    使用Bash Shell 脚本对比两个CSV文件中指定字段差异

    awk详细用法小结awk awk

    在Linux/Unix环境中,awk是一个标准工具,其强大之处在于能够对输入文件的每一行进行模式匹配,并执行相应的操作。 awk最初由Alfred Aho、Brian Kernighan和Peter Weinberger在贝尔实验室开发,随后被GNU项目采用并...

    awk参考资料下载awk

    awk命令的两种基本形式如下: 1. `awk [options] 'script' var=value file(s)` 2. `awk [options] -f scriptfile var=value file(s)` 其中,`options`是命令选项,`script`是直接在命令行中编写的awk脚本,`var=...

    awk命令详解大全

    - **BEGIN和END**:这两个特殊关键字分别在awk开始处理记录之前和之后执行。 - **流程控制语句** - `if-else`语句:根据条件执行不同的代码块。 - `while`语句:重复执行某个代码块直到条件不再满足。 - `do-...

    sed和awk单行命令比较

    使用`awk`,可以简单地通过`printf`函数在打印每行后额外输出两个换行符。 ##### 2.2 删除空白行 **sed**: ``` sed '/^$/d;G' ``` 这里使用了两个命令:`/^$/d`用于删除空白行,而`G`命令则将当前行添加到模式空间...

    Effective awk Programming, 4th Edition[awk高效编程4版]

    函数和输入/输出是awk的两个关键特性。书中详细介绍了内置函数,如printf和getline,以及如何使用print和next命令。同时,还讲解了如何处理文件和管道,与其他Unix工具结合使用,实现更强大的数据处理流程。 最后,...

    shell脚本比较两台服务器目录及文件是否一致

    - 比较两个文本文件中的MD5值,判断文件是否一致。 - 输出不一致的文件列表,包括只存在于一台服务器的文件以及内容发生变化的文件。 #### 脚本详解 1. **定义变量**: - `local_dir`:本地服务器的目录路径。 -...

    linux awk学习笔记

    Linux中的`awk`是一个强大的文本分析工具,由Alfred Aho、Brian Kernighan和Peter Weinberger三位开发者创建,因此得名。`awk`的主要功能是处理文本和数据,通过匹配特定模式对文件中的行进行操作。在Linux系统中,...

    Linuxawk命令详解[归类].pdf

    ⑤ 当一条输入记录比较了所有的 awk_cmd 后,awk 读取输入的下一行,继续重复步骤③和④,这个过程一直持续,直到 awk 读取到文件尾。 ⑥ 当 awk 读完所有的输入行后,如果存在 END,就执行相应的 actions。 awk_...

    The AWK Programming Language 中文版

    AWK允许通过比较、计算或者文本内容来进行选择,例如: ```awk awk '$3 > 0' input-file # 选择第三个字段大于0的记录 ``` 可以组合多个模式,实现更复杂的逻辑判断。此外,AWK还支持数据验证,例如确保输入数据的...

    AWK用法AWK用法AWK用法

    `&&`是逻辑“与”运算符,确保两个条件同时满足。 ### 更多高级用法 #### awk ‘{print NR, NF, $1, $NF}’ file 打印文件`file`中每一行的行号(`NR`)、字段数(`NF`)、第一列(`$1`)和最后一列(`$NF`)。这有助于...

    awk命令详解 包括详细的组合结构

    - 脚本方式:将awk命令写入一个文件,然后使用`awk -f awk-script-file input-files(s)`调用,其中`awk-script-file`是包含awk命令的文件,`input-files(s)`是要处理的输入文件。 2. **awk脚本** awk脚本由模式和...

    awk 基本的一些常用用法

    - 如果第一个域以两个数字结束,打印这个记录:`awk '$1 ~ /[0-9][0-9]$/' test` - 如果第一个域不等于10,打印该行:`awk '$1 != 10' test` #### 多文件操作 - 当需要处理多个文件时,可以使用`FILENAME`变量来...

    awk-培训.docx

    - `/[0-9][0-9]+/`匹配两个或更多数字,`/[0-9][0-9]*/`匹配一个或更多数字。 - `OFS`是输出字段分隔符,默认为空格,可自定义。 - `ORS`是输出的记录分隔符,默认是换行符。 awk语句`awk '{code}1'`中的`1`是默认...

    Awk学习笔记和指南

    数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和 动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据...

    linux-awklinux-awk

    它可以处理来自标准输入、一个或多个文件,甚至是其他命令的输出结果。Awk 支持高级功能,比如用户自定义函数和动态正则表达式,这使得它成为 Linux/Unix 下的强大编程工具之一。 Awk 的主要工作方式是逐行扫描文件...

    sed awk讲解资料全集

    在IT行业中,文本处理是日常工作中不可或缺的一部分,而sed和awk正是两个强大的命令行工具,它们在处理大量文本数据时显得尤为高效。本资料全集将深入讲解这两个工具的使用,帮助你掌握它们的精髓,让你能够自如地...

    emacs和Awk入门教程

    4. **缓冲区和窗口管理**:可以在同一界面内同时编辑多个文件,并通过窗口分割来查看和比较内容。 5. **交互式帮助**:Emacs内置了丰富的帮助文档,通过C-h t可以学习基本教程,C-h f或C-h v查询函数和变量的用法。 ...

Global site tag (gtag.js) - Google Analytics