linux 中如何删除重复行


1、sort + uniq实现

root@PC1:/home/test# ls
a.txt
root@PC1:/home/test# cat a.txt
1 2
a b
1 2
1 2
o p
a b
m m  
root@PC1:/home/test# sort a.txt | uniq         ## 删除重复行
1 2
a b
m m
o p
root@PC1:/home/test# sort a.txt | uniq -u      ## 取唯一行
m m
o p
root@PC1:/home/test# sort a.txt | uniq -d      ## 取重复行
1 2
a b

2、awk实现

001、

root@PC1:/home/test# ls
a.txt
root@PC1:/home/test# cat a.txt
1 2
a b
1 2
1 2
o p
a b
m m
root@PC1:/home/test# sort a.txt | awk '{if(line != $0) print $0; line = $0}'     ## 删除重复行
1 2
a b
m m
o p

002、

root@PC1:/home/test# ls
a.txt
root@PC1:/home/test# cat a.txt
1 2
a b
1 2
1 2
o p
a b
m m
root@PC1:/home/test# awk '!($0 in array) {array[$0]; print}' a.txt   ## 删除重复行
1 2
a b
o p
m m

003、

root@PC1:/home/test2# ls
a.txt
root@PC1:/home/test2# cat a.txt
a b
c d
a b
e f
c d
c d
m n
root@PC1:/home/test2# awk '!a[$0]++' a.txt     ## 提取不重复的行
a b
c d
e f
m n

3、 sed实现

root@PC1:/home/test# ls
a.txt
root@PC1:/home/test# cat a.txt
1 2
a b
1 2
1 2
o p
a b
m m
root@PC1:/home/test# sort -n a.txt | sed '$!N; /^\(.*\)\n\1$/!P; D'     ###????
a b
m m
o p
1 2