`
cfyme
  • 浏览: 275128 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Linux去除重复列(awk之数组妙用)

 
阅读更多

文件,包含的内容如下:

 

去除重复列结果如下

 

方法:awk '{for(i=1;i<=NF;i++)a[$i,NR]++}{for(j in a){split(j,b,SUBSEP);if(b[2]==NR)printf b[1]" "} printf "\n"}' file

 

说明:本方法巧妙的利用了awk的数组,a[$i,NR]将读入的数据以域和行号为下标,只要本行的列中有重复数据则以该数据和该行行号为下标的数组元素加1。后面通过for循环取出下标,用split(j,b,SUBSEP)将两个下标分离赋值给新的数组b,此时b[1]中的数据就是我们想要的(不重复的列),最后判断b[2]与行号相等的则打印b[1]执行命令后结果如下:

如果只想打印重复列,只需a数组的之是否大于1:awk '{for(i=1;i<=NF;i++)a[$i,NR]++}{for(j in a){split(j,b,SUBSEP);if(b[2]==NR&&a[b[1],NR]>1)printf b[1]" "} printf "\n"}' file

执行结果如下:

补充:

awk的二维数组使用

awk的多维数组在本质上是一维数组,更确切一点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例如,array[2,4] = 1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP (\034)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2\0344。

类似一维数组的成员测试,多维数组可以使用 if ( (i,j) in array)这样的语法,但是下标必须放置在圆括号中。
类似一维数组的循环访问,多维数组使用 for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。split ( item, subscr, SUBSEP)

分享到:
评论

相关推荐

    linux中shell脚本中awk的深入分析

    awk 在 Linux 中的深入分析 awk 是一款功能强大且灵活的文本处理工具,在 Linux 系统中广泛应用于数据处理、文本处理和报表生成等领域。本文档将深入分析 awk 的使用和实现机制,探讨 awk 的内置变量、指令和函数,...

    sed和awk使用实例

    这两条命令都可以用于去除文件中的重复行,awk 的方法使用关联数组来实现,而 sort 命令使用 uniq 命令来实现。 三、其他实例 1. 筛选出 login_version 的值 awk -F: '$1~/login_version/{print $2}' a.txt sed -...

    awk实现Left、join查询、去除重复值以及局部变量讲解例子

    在本篇文章中,我们将探讨如何使用 awk 实现类似数据库的左连接(Left Join)查询,去除重复值,以及使用局部变量。这些高级技巧对于理解和优化数据处理脚本非常有帮助。 ### 一、awk 左连接(Left Join)查询 左...

    Sed与awk第二版(高清版).pdf

    2. **变量与数组**:支持变量定义和使用数组进行数据存储。 3. **流程控制**:包括条件语句(if/else)、循环语句(for/while/do-while)等。 4. **函数与过程**:可以自定义函数和过程以增强代码的复用性。 5. **...

    sed awk高级编程案例

    示例中通过使用tr命令去除换行符,xxd命令将字符转换为十六进制形式,然后用sed命令将0x前缀替换为%号,最后再转换十六进制字母大小写以匹配标准的URL编码格式。但需要额外注意的是,该方法会将所有字符进行编码,...

    文本文件去除重复记录

    本篇文章将详细讲解如何有效地实现文本文件中的重复记录去除,以达到优化数据和提高工作效率的目标。 首先,我们要理解什么是重复记录。在文本文件中,如果某一行数据与其他行的数据完全相同,我们便称其为重复记录...

    附件备份

    6. 字符串和数组处理:上述案例涉及到awk数组的使用,包括数组初始化、元素追加、遍历打印等操作。同时,还包含了字符串分割以及字符串的拼接,体现了awk在文本处理方面的灵活性。 7. 文件操作:在案例中使用了...

    awk详细介绍,最全的资料

    - **数据清洗**:去除重复记录、填充缺失值等。 - **报表生成**:基于数据集生成统计报告或图表。 - **配置文件管理**:批量修改配置文件中的参数设置。 - **脚本编写**:作为 shell 脚本的一部分,执行自动化任务。...

    用Linux命令行实现SQL的groupby

    `sort`用于排序数据,`uniq`用于去除连续重复的行,但当与`-c`选项一起使用时,它会计算每个唯一行的出现次数,这类似于`COUNT(*)`。例如,要按产品ID分组并计数: ```bash sort -t ',' -k1,1 sales.txt | uniq -c ...

    awk&sed; PDF文档学习资料

    awk最初被设计用于Unix系统,如今已成为Linux及其他类Unix操作系统的重要组成部分之一。其功能强大,能够执行复杂的文本处理任务,例如数据分析、格式化输出等。 #### sed简介 sed(stream editor)是一款流编辑器...

    sed 使用手册linux unix 下常用的文本处理工具。用来处理格式化文本

    根据提供的文件信息,我们可以归纳出一系列关于sed与awk在Linux/Unix系统下的使用方法与技巧。下面将详细解析这些知识点: ### sed 常用命令与应用 #### 1. 删除空行 ``` sed '/^$/d filename' ``` 这条命令会删除...

    shell中常见命令与awk,sed的等价命令

    `awk`则使用一个循环数组来保存最近的10行,并在文件末尾输出。 ##### 8. `cut -c` **Shell命令:** `cut -c10 &lt;file&gt;` **Sed等价命令:** `sed 's/\(.\)\{10\}.*/\1/' &lt;file&gt;` **Awk等价命令:** `awk '{print substr...

    LINUX and SHELL 自学总结

    8. #UNIQ 去掉重复 8 9. #SORT 排序 8 10. 杀掉某进程 8 11. #SHELL输出TAB和空格 8 12. #PS用法 8 13. #TAIL用法 9 14. #ECHO选项 9 15. #GREP和EGREP过滤组 9 16. LS的特殊用法 9 六、LINUX SHELL其它 9 1. VI使用...

    LINUX与UNIX SHELL编程指南(很全)

    9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则...

    linux 编程技术

    【Linux编程技术】深入解析 Linux操作系统以其开源、稳定和高效的特点,在IT行业中扮演着重要的角色,对于开发者来说,掌握Linux编程技术至关重要。本篇主要介绍Linux系统下的编程技术,尤其是网络编程,涵盖进程...

    Linux shell编程指南

    9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则...

    Linux与unix shell编程指南

    9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则...

    绝版经典《Linux与UNIX Shell编程指南》

    9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则...

    linux shell 编程教程

    9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则...

    LINUX与UNIX_Shell编程指南(上)

    9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则...

Global site tag (gtag.js) - Google Analytics