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

 

posted @ 2022-05-01 09:19  小鲨鱼2018  阅读(1164)  评论(0编辑  收藏  举报