`
shixiaomu
  • 浏览: 382949 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

awk 交集 并集 累加

 
阅读更多
这段时间多亏大家的帮助,利用awk命令解决了很多问题,在此也总结自己实际运用到的问题,方便其他童鞋一起学习shell。

问题一:
如果两个文件行数相同,只是希望逐行合并
方法一

    $ paste -d "\t" file_1 file_2

复制代码
方法二

    $ awk 'NR==FNR{a[NR]=$0;nr=NR;}NR>FNR{print a[NR-nr]"\t"$0}' file_1 file_2

复制代码
方法三

    $ awk '{getline f2 < "file_2"; print $0"\t"f2}' file_1

复制代码
问题二:
两个文件之间单纯求记录交集
方法一(需要先去除重复记录,两个文件的格式必须相同,尤其要注意每行结尾的空格,换行符)

    $ sort file_1 file_2 |uniq -d

复制代码
方法二(file_1大于file_2的记录数,不适合记录过多的文件,也需要提前去重复)

    $ grep -w -f file_1 file_2|sort|uniq

复制代码
两种方法可以一起用,从而检查结果是否准确
方法三(如果需要匹配超过两个的文件,就修改“==2”的数值为文件个数)

    $ awk '!b[$1,ARGIND]++{if(++a[$1]==2)print}' file_1 file_2

复制代码
问题三:
累加第二列的数值
方法一(无条件累加)

    $ awk '{a=a+$2}END{print a}'  file

复制代码
方法二(若第三列的内容相同,则累加对应记录的第二列数值)

    awk '{a[$3]+=$2}END{for(i in a) printf "%s\t %d\n",i,a[i]}' file

复制代码
方法三(对其他列的内容进行限制筛选以后累加第二列的数值)

    $ awk '$4=="abc" && $5>=100 && $6<=500{a=a+$2}END{print a}' file

复制代码
方法四(若第三列,第四列内容相同,则累加第二列的数值,并将结果升序输出)

    $ awk '{a[$3,"\t",$4]+=$2}END{for(i in a)printf "%s\t %d\n",i,a[i]}' file|sort

复制代码
分享到:
评论

相关推荐

    awk详细用法小结awk awk

    ### awk详细用法小结 #### 一、awk简介与版本 awk是一种强大的文本分析工具,主要用于Linux/Unix系统下的数据处理与报告生成。它支持正则表达式、模式匹配和复杂的文本处理功能,是系统管理员和程序员进行数据处理...

    awk入门到精通.pdf

    《awk入门到精通》这本书是一本专为学习awk语言设计的指南,主要关注awk适用的问题类型和常用的解题策略。作者希望通过一系列具有代表性的实例,帮助读者快速掌握awk的使用技巧和特性。书中实例逐步深入,互相连贯,...

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

    《Effective awk Programming, 4th Edition》是一本深入讲解awk编程技术的专业书籍,旨在帮助读者提升在文本处理和数据操作中的效率。awk是Unix/Linux环境中的一款强大工具,它专门用于处理结构化的文本数据,如日志...

    awk参考资料下载awk

    【awk参考资料】深入理解awk awk是一种强大的文本分析工具,主要在Linux/Unix环境中使用,由Alfred Aho、Brian Kernighan和Peter Weinberger三位大师共同开发。它能够处理来自标准输入、文件或命令输出的数据,通过...

    awk教程-awk教程.rar

    **awk命令详解** awk是一种强大的文本分析工具,广泛应用于Linux和Unix系统中,用于处理结构化数据,如CSV、TSV格式的文件。它通过模式匹配和动作来处理输入流中的每一行,允许用户定制复杂的文本处理逻辑。下面将...

    The AWK Programming Language 中文版

    AWK是一种非常实用的编程语言,它在文本处理和数据分析方面表现出色。它的特点是编写程序非常简单,即便是只有一两行的程序也能完成复杂的任务。AWK非常适合那些需要快速解决特定数据处理问题的场景。 ### AWK程序...

    ass109.awk

    2. **运行awk脚本**:将生成的trace文件作为"ass109.awk" 的输入,执行命令如`awk -f ass109.awk trace_file_name.trc`,脚本会解析文件并输出关键信息。 3. **分析结果**:"ass109.awk" 可能会输出SQL语句、等待...

    awk入门级教材awk入门awk入门

    ### awk入门级教材知识点详解 #### 一、awk简介 **awk** 是一种强大的文本处理工具,主要用于在一组文件上查找符合特定模式的行或字段,并执行相应的操作。它简化了数据选择和转换的过程,使其变得更为直观和简单...

    Sed与Awk (中文版)

    **sed和awk工具的介绍与应用** sed和awk是广泛应用于UNIX系统中的两个文本处理工具。sed是流编辑器(stream editor)的缩写,而awk则是一种编程语言,得名于其三位开发者:Alfred Aho、Peter J. Weinberger和Brian ...

    AWK实例教程 AWK实例教程中文版

    ### AWK实例教程知识点解析 #### 一、AWK简介及背景 - **AWK**是一种功能强大的文本处理工具,最初由贝尔实验室的Alfred Aho、Peter Weinberger和Brian Kernighan共同开发,因此得名AWK。尽管这个名字听起来有些...

    巧用AWK处理二进制数据文件

    "巧用AWK处理二进制数据文件" AWK是Unix、Linux中处理文本的好工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示。但是,AWK的强大功能只针对纯文本文件,对于带有很多不可...

    awk使用手册

    ### awk使用手册详解 #### 一、awk简介 在UNIX世界里,存在许多强大的文本处理工具,其中awk作为一款出色的模式扫描与处理语言,却往往被人们所忽视。它的名字来源于三位创造者的名字首字母——Aho、Weinberg以及...

    MOXA_AWK-3121配置方法及要点说明

    MOXA AWK-3121 配置方法及要点说明 MOXA AWK-3121 是一种工业级无线设备,具有 web 功能配置、IP 网络参数设置、工作模式选择、功率增强等特点。本文将详细介绍 MOXA AWK-3121 的配置方法及要点说明。 一、Web ...

    awk教程入门到精通

    awk 教程入门到精通 awk 是一种功能强大的文本处理工具,它可以对文本进行处理、格式化和输出。awk 的主要用途是处理文本文件,提取和处理数据,生成报表等。下面是一份 awk 教程,从基础知识到高级应用,涵盖了 ...

    awk实例详解——Unix下awk的使用

    在Unix和Linux操作系统中,`awk`是一个强大的文本分析工具,用于处理结构化的文本数据,如日志文件、CSV文件等。它通过模式匹配和动作来解析和操作文本,是系统管理员和程序员不可或缺的工具之一。`awk`的名字来源于...

Global site tag (gtag.js) - Google Analytics