Linux 文本处理时,经常要删除重复行,下面是三种方法

第一,用sort+uniq,注意,单纯uniq是不行的,uniq对于重复行不上下连续时不起作用

因此,先对文件的行内容排序 sort,使其上下内容连续后,再使用 uniq

sort -n test.txt | uniq

 

第二,用sort+awk命令,注意,单纯awk同样不行,原因同上。

sort -n $file | awk '{if($0!=line)print; line=$0}'

 

第三,用sort+sed命令,同样需要sort命令先排序。

sort -n $file | sed '$!N; /^\(.*\)\n\1$/!P; D'

 

Shell脚本

# !/bin/sh

file='test.txt'
sort -n $file | uniq
sort -n $file | awk '{if($0!=line)print; line=$0}'
sort -n $file | sed '$!N; /^\(.*\)\n\1$/!P; D'

测试文件:

yanggang@barry$ cat test.txt
aaa
bbbbb
ccccc
123
aaaaa
123
bbb
aaa

执行结果:

yanggang@barry$ ./diffRow.sh
aaa
aaaaa
bbb
bbbbb
ccccc
123

 

 

参考推荐

Linux 命令 uniq 去重用法

Linux 删除重复行

Linux删除文本中的重复行

Linux cut 命令

Linux 常用命令大全

linux 命令快捷键

CentOS 修改date系统时间

Linux 实用好评的命令工具

Linux 15个命令,大幅提高工作效率

Linux rc.local 命令不执行

Linux expect 命令无需输入密码登陆

Linux date日期格式及加减运算

Linux下tar、bz、gz等压缩包的压缩和解压

 

 

原文: Linux删除重复行