[root@localhost ~]#cat 0712
YRSD2-1-11
YRSD2-2-18
YRSD1-1-8
YRSD1-1-18
YRSD1-1-20
YRSD1-1-25
YRSD1-2-38
YRSD1-2-39
YRSD1-2-44
YRSD1-2-48
YRSD1-2-43
YRSD1-3-58
YRSD1-3-59
YRSD1-4-67
YRSD1-4-68
YRSD1-4-70
YRSD1-4-71
YRSD1-3-52
YRSD4-1-5
YRSD3-1-7
YRSD3-1-22
YRSD3-1-28
YRSD3-2-37
YRSD3-2-50
YRSD3-2-53
YRSD3-2-55
YRSD6-1-1
YRSD6-1-5
YRSD6-1-15
YRSD6-2-28
YRSD6-2-32
YRSD6-2-36
YRSD5-1-7
YRSD5-1-22
YRSD5-1-23
YRSD5-1-24
YRSD5-1-25
YRSD5-1-26
YRSD5-2-33
YRSD5-2-37
YRSD5-2-42
YRSD5-2-51
YRSD5-2-54
YRSD5-2-53 YRSD1-1-18
YRSD1-2-38
YRSD1-2-44
YRSD1-2-48
YRSD1-4-67
YRSD1-4-68
YRSD2-1-11
YRSD2-2-18
YRSD3-1-22
YRSD3-1-28
YRSD5-1-22
YRSD5-1-25
YRSD5-2-37
YRSD5-2-42
YRSD5-2-54
YRSD6-1-1
YRSD6-1-15

  

想将重复的行打印出来,结果搞错了,闲来无聊想想为什么会有这样的结果,算是对awk的加深印象

[root@localhost ~]#awk 'a[$0]++{for(i in a)print i,a[i]}' 0712 | wc -l
810

  

解析
a[$0]++结果为真时,执行action,所以第一遍不重复的时候,将数组存储
然后每次遇到重复的行,pattern结果为真,执行一次action,一共18个重复行,执行18次,每次结果为45行,共计45*18=810行

顺序对结果也有影响,对计数有影响

[root@localhost ~]#awk '++a[$0]{for(i in a)print i,a[i]}' 0712 | wc -l
1845

  

解析
因为++a[$0]第一次就有结果了,所以第一次就将a[第一行]打印出来,
第二行时,将第一行、第二行打印出来
第三行时,将第一二三行打印出来
以此类推
不重复行为45行
所以结果为45*(1+45)/2=1035
从第46行开始重复,且每次打印时数组均为45项,即45*18=810
1035+810=1845
over

[root@localhost ~]#awk 'a[$0]++;END{for(i in a)print i,a[i]}' 0712 | wc -l
63

  

awk只执行pattern对空间的内容没有影响,所以使用END模块也就没有效果
百度百科awk
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。

所以正确的END模式如下:

[root@localhost ~]#awk '{a[$0]++};END{for(i in a)print i,a[i]}' 0712 | wc -l
45

  

awk处理重复行错误分析的更多相关文章

  1. awk除去重复行

    awk去除重复行,思路是以每一行的$0为key,创建一个hash数组,后续碰到的行,如果数组里已经有了,就不再print了,否则将其print 测试文件: 用awk: 用sort+uniq好像出错了: ...

  2. linux 下删除重复行-- uniq 与 awk

    $ cat file liw liw liw hdsui mdksjd liw $ cat file | uniq -u # 只删除相邻的,不保留重复行 hdsui mdksjd liw $ cat ...

  3. 【shell】awk按域去除重复行

    首先解释一下什么叫“按域去除重复行”: 有的时候我们需要去除的重复行并不是整行都重复,两行的其中一列的元素相同我们有的时候就需要认定这两行重复,因此有了今天的内容. 去除重复行shell有一个原生命令 ...

  4. linux用命令删除重复行

    文本处理时,经常要删除重复行,下面是三种方法 第一,用sort+uniq,注意,单纯uniq是不行的. sort -n test.txt | uniq 第二,用sort+awk命令,注意,单纯awk同 ...

  5. Linux合并文件、去除重复行的命令

    Linux合并文件命令: awk '{printf("%s\n",$0)}' YQ-*101?.txt >  123.txt   linux去除重复行命令:cat YQ-10 ...

  6. Linux删除重复行 排序和不排序的做法--转载

    本文部分翻译自这里,来自 Jadu Saikia 的博客,这个博客上有很多非常有用的小技巧,有空可以多看看. 通常如果我们想获取一个文件里不重复的行的时候,我们可以直接通过 sort -u 命令,先把 ...

  7. Linux删除重复行

    本文转自http://blog.csdn.net/ithomer/article/details/6926325 文本处理时,经常要删除重复行,下面是三种方法 第一,用sort+uniq,注意,单纯u ...

  8. shell 删除文本中的重复行

    三种常见方法:第一,用sort+uniq,注意,单纯uniq是不行的. shell> sort -k2n file | uniq > a.out 这里我做了个简单的测试,当file中的重复 ...

  9. SQL Server删除重复行的6个方法

    SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考. 1.如果有ID字段,就是具有唯一性的字段 delect   ta ...

随机推荐

  1. 【读书笔记】【深入理解ES6】#6-Symbol和Symbol属性

    在ES5及早期版本中,JS语言包含5中原始类型: 字符串型 数字型 布尔型 null undefined ES6引入了第六种原始类型: Symbol 创建Symbol let firstName = ...

  2. 如何删除chrome地址栏里面曾经输错的地址

    在chrome浏览器的地址栏输入你想删除的网址的部分字幕,比如,在地址栏输入form,然后用键盘上的方向键定位到你想删除的那个错误的地址,如下图所示   然后在键盘上按 shift+del 组合键将其 ...

  3. 名片管理系统v1.1(tools)

    cords_list = []def show_cords(): print("*"*80) print("欢迎使用[名片管理系统]v.1.1") print( ...

  4. ajax解决跨域问题

    1.在介绍之前先介绍几个概念 json: { date: "Sun Dec 24 21:44:42 CST 2017", temperature: "21", ...

  5. 应用服务器GC回收常见问题总结

    近一段时间多次发现因GC问题造成系统性能问题(应用服务间歇性响应缓慢.应用服务器CPU占用较高等),在此总结一下: 1.代码中直接调用GC.Collect() 2.字符串等操作频繁的内存申请 3.频繁 ...

  6. WPF Binding学习(二)

    Binding作为数据的桥梁,连通业务逻辑层的对象(源对象)和UI的控件对象(目标对象).在这座桥梁上,我们不仅可以控制在源对象与目标对象是双向通行还是单向通行.还可以控制数据的放行时机,甚至可以在这 ...

  7. bzoj:2595: [Wc2008]游览计划

    Description Input 第一行有两个整数,N和 M,描述方块的数目. 接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为一个景点:否则表示控制该方块至少需要的志愿者数 ...

  8. HDU 1024 Max Sum Plus Plus【动态规划求最大M子段和详解 】

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  9. #if defined、#if !defined用法

    大型程序或者修改别人的程序时,当我们需要定义常量(源文件还是头文件 ),我们就必须返回检查原来此常量是否已经定义, if defined宏 就是用于检测的. 举个例子,如下: #define .... ...

  10. linux下python2升级python3,python2和python3并存

    wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz 解压:tar -xzvf Python-3.6.4.tgz cd Pytho ...