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