linux awk删除文本重复行需要注意强制类型转换的问题

希望删除IP地址前三段相同的多余重复行。测试文本如下:

# cat 1.txt
2.1.10.1
2.1.10.2
2.11.0.1
2.11.0.2

如果数组下标不加引号,在这个特殊的情况下会被强制转换为数字,最终导致统计失败:

# awk 'BEGIN{FS=OFS="."}{if(!a[$1.$2.$3]++)print}' 1.txt
2.1.10.1

# awk -F '.' '{a[$1.$2.$3]++;}END{for(i in a)print i"  "a[i]}' 1.txt
2110  4

数组下标加上引号之后,一切恢复正常:

# awk 'BEGIN{FS=OFS="."}{if(!a[$1"."$2"."$3]++)print}' 1.txt
2.1.10.1
2.11.0.1

# awk -F '.' '{a[$1"."$2"."$3]++;}END{for(i in a)print i"  "a[i]}' 1.txt
2.11.0  2
2.1.10  2

扩展阅读:

(0)

相关推荐

  • 怎么删除Excel2003中的重复行与重复数据

    怎么删除Excel2003中的重复行与重复数据 删除重复行 1.将光标定位到表格内,数据-筛选-高级筛选. 2.设置筛选结果放置的位置,并选择不重复的记录. 3.此时筛选结果中已经删除了重复行,效果如 ...

  • Excel 如何删除重复行

    Excel中如何删除重复行呢?下面小编来教大家. 操作方法 01 首先,我们打开我们的电脑,然后我们打开一个excel文档,此时我们可以看到文档中有重复的行,里面都是4,我们选中图示中的区域: 02 ...

  • Linux 删除文本中的重复行的方法

    在进行文本处理的时候,我们经常遇到要删除重复行的情况.那怎么解决呢?下面就是三种常见方法? 第一,用sort+uniq,注意,单纯uniq是不行的. shell> sort -k2n file ...

  • Linux删除重复行的代码

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

  • Linux如何删除重复行的代码?

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

  • linux删除文件中的几行(linux删除文本里的几行数据)

    linux怎么删除文件前几行这是删除第一行到第n行sed -i '1,nd' 文件名sed是一种流编辑器,它是文本处理中非常好的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行 ...

  • linux下的删除重复行命令uniq详细介绍和实例

    一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉。linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个。使用uniq的时候要注意以下二点 1,对文本操 ...

  • 如何在Linux下合并多个文件并删除重复行

    在Linux合并文件可使用cat或者paste命令,本例中以合并a.txt和b.txt为例. 源文件 01 首先输入"cd tmp"到文件目录(本例中为tmp). 02 输入&qu ...

  • linux中去掉文件重复数据行的方法(去重复ip)

    一、去掉相邻重复的数据行 复制代码 代码如下: $cat data1.txt | uniq 输出: beijing wuhan beijing wuhan 二、去掉所有重复的数据行 复制代码 代码如下 ...