`

Linux awk 按行内容去重

阅读更多
awk 介绍

1. 先上例子
cat  test.log  |sort  |awk '
BEGIN{m="";}
{ if(m=="" || m!=$1){m=$1; print $1;} }
' |wc -l
 
2. 解释例子
    2.1 cat       查阅test.log内容
    2.2 |sort     对test.log的内容进行排序
    2.3 |awk '...'    执行awk去重(稍后详述)
    2.4 |wc -l   统计结果行数
    2.5 BEGIN{m="";} 初始化代码块; 声明了变量m为空值。
    2.6 { if(m=="" || m!=$1){m=$1; print $1;} }
          {}称为执行体。
           如果m为空或者m不等于当前行的值,则把当前行的值给m,然后输出当前行。
           由于是排序的,所以下一行跟上一行比较,自然达到了去重的效果。

3. 模块解释
    BEGIN模块
    BEGIN模块后紧跟着动作块,这个动作块在awk处理任何输入文件之前执行。所以它可以在没有任何输入的情况下进行测试。它通常用来改变内建变量的值,如OFS,RS和FS等,以及打印标题。如:$ awk 'BEGIN{FS=":"; OFS="\t"; ORS="\n\n"}{print $1,$2,$3} test。上式表示,在处理输入文件以前,域分隔符(FS)被设为冒号,输出文件分隔符(OFS)被设置为制表符,输出记录分隔符(ORS)被设置为两个换行符。$ awk 'BEGIN{print "TITLE TEST"}只打印标题。 
 
    END模块
    END不匹配任何的输入文件,但是执行动作块中的所有动作,它在整个输入文件处理完成后被执行。如$ awk 'END{print "The number of records is" NR}' test,上式将打印所有被处理的记录数。

参阅资料:


分享到:
评论
2 楼 lionbule 2012-06-01  
thebye85 写道
这个地方也可以用uniq

thx
1 楼 thebye85 2012-05-16  
这个地方也可以用uniq

相关推荐

    Linux实现文件内容去重及求交并差集

    这会将文件内容按字母顺序排序。然后,我们可以使用`uniq`命令去除连续重复的行: ```bash sort aaa.txt | uniq > bbb.txt ``` 这将把去重后的结果保存到`bbb.txt`中。注意,`uniq`不会去除不连续的重复行,因此...

    awk-培训.docx

    在Linux系统中,awk是一种强大的文本分析工具,尤其在处理数据和日志文件时非常有用。awk其实有多个版本,包括awk、nawk和gawk,而在CentOS系统中默认使用的是gawk。awk的工作原理是对文本文件的每一行进行处理,...

    生产环境awk最佳实践

    在Linux和Unix环境中,`awk`是一款非常强大的文本处理工具,它能够执行复杂的文本分析任务而无需编写大量的程序代码。本文将基于提供的示例脚本,详细介绍`awk`在生产环境中的应用技巧,并对各个知识点进行深入探讨...

    Linux shell命令统计某列去重后的值

    ### Linux Shell 命令统计某列去重后的值 #### 概述 本文主要介绍如何使用 Linux Shell 命令来实现对文本文件中某列数据进行去重并统计的过程。具体应用场景为:根据 MAC 地址获取其对应的硬件版本和软件版本,并...

    awk指南新手指南很好的资料

    AWK是一种强大的文本处理工具,不仅在Linux环境中,而且在任何操作系统中都是功能最全面的数据处理引擎之一。它由Alfred Aho、Peter Weinberger和Brian Kernighan三位计算机科学家共同开发,其名字即由这三位创始人...

    Linux培训视频.zip

    11-Linux系统inode及链接知识及企业按哪里精讲 12-Linux系统用户管理知识精讲1 13-Linux系统用户管理知识精讲2 14-Linux系统基础权限知识精讲 15-Linux系统特殊权限知识精讲 16-Linux通配符和特殊字符知识 17-Linux...

    Linux文本处理命令合集

    ### Linux文本处理命令合集详解 #### diff/patch:查找/修补文本差异 - **diff** 命令用于比较两个文件之间的不同之处。 - `diff version1.txt version2.txt`:简单地列出两个文件之间的不同行。 - `diff -u ...

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

    awk 也可以用来去除文本中的重复行,以下介绍三种不同的实现方式: **方法1:** ```bash awk '{for(i=1;i;i++)a[i]=$i;asort(a);for(i=1;i(a);i++)printf a[i]"\t";printf "\n"}' repea | sort | uniq ``` 此方法将...

    linux shell实现求一个多维数组中的最大和最小值

    然后使用 `sort` 进行排序,`uniq` 去重,并通过 `grep` 过滤掉空白行。最后,使用 `head` 和 `tail` 获取最小值和最大值。 ### 总结 以上四种方法分别展示了不同的技术来解决相同的问题:在一个包含多维数组的...

    linux tools

    在Linux命令行界面,我们最常使用的可能是`ls`,用于列出目录内容;`cd`,用于切换当前工作目录;`mkdir`和`rmdir`,分别用于创建和删除目录;`touch`,用于创建新文件;`rm`,用于删除文件或目录,但需谨慎使用,...

    linux下perl,sed,shell批量替换文件内容.docx

    其中,`grep` 命令用于查找包含指定字符串的文件,`awk` 命令用于提取文件名,`sort` 命令用于排序,`uniq` 命令用于去重,`xargs` 命令将结果传递给 sed 命令,`sed -i` 命令将执行字符串替换操作。 例如,要将...

    一步一步学 Linux

    - 介绍了常用的Linux命令及其快捷形式,例如`cd`用于改变目录,`ls`用于列出目录内容等。 #### 三、命令与文件的查询 - **which**:查询指定命令的位置。 - **whereis**:显示命令的二进制文件、源文件和手册页的...

    Linux 每日小技巧

    这个命令会清理历史记录中的多余字符,只保留命令名称,然后去重并按执行次数降序显示前10条。 #### 6. 杀死所有Nginx进程 如果需要杀死所有Nginx进程,可以使用以下命令: ```bash ps -ef | grep -v grep | grep ...

    linux下批量替换文件中的内容.docx

    这条命令使用 awk 命令来分割字符串,对结果进行排序和去重,然后使用 xargs 命令将结果传递给 sed 命令实现批量替换。 在 Linux 系统中,还可以使用以下格式的命令来实现批量替换文件中的内容: ``` sed -i s/...

    linux shell sort从入门到精通

    Linux Shell 中的 Sort 命令是非常实用的命令之一,它可以对文本文件进行排序、去重、提取等操作。本文将从 Sort 命令的基本语法开始,逐步深入到高级用法,最后通过实践案例来巩固所学知识。 一、Sort 命令的基本...

    linux-常用命令学习笔记.pdf

    Linux命令可以按功能分类,如文件管理、用户管理、进程管理、网络管理等。文件管理相关的命令包括文件创建、删除、查看、移动、拷贝、编辑等。例如,"cp"命令用于复制文件或目录,"rm"命令用于删除文件或目录,"mv...

    Linux shell脚本全面学习.doc

    - `sort`和`uniq`对文件内容进行排序和去重。 - `expr`执行算术运算。 - `find`搜索指定路径下的文件。 - `tee`将数据同时输出到屏幕和文件。 - `basename`和`dirname`分别返回文件的基本名称和路径。 - `head`和`...

    linux打开文件数

    这里,我们首先使用`lsof -n`列出所有打开的文件,`awk`用于提取第二列(即PID),接着`sort`和`uniq -c`组合使用来统计每个PID对应的打开文件数量,最后通过`sort -nr`按降序排列并用`less`分页显示结果。...

    Linux如何查看当前有多少IP连接了这台机子.如何查看都谁连接了我

    这个命令首先筛选出连接,然后提取第五列的IP地址,进一步处理为只取IP部分,去重后计算唯一IP的数量。 4. **使用Shell脚本:** 如果你需要定期检查或自动化这个过程,可以创建一个简单的Shell脚本,比如`check_...

    Linux培训系列第二讲(1).pdf

    - **cat、sort、uniq**:用于合并、排序和去重文件内容。 - **wc、head、tail**:获取文件的基本统计信息,以及查看文件头部或尾部内容。 - **tac、expand、unexpand**:反向显示文件内容,以及处理制表符。 - **cut...

Global site tag (gtag.js) - Google Analytics