如果我们通过sed或者awk或者grep等命令已经获取到了我们需要的数据,但是许多数据是重复的,我们需要将重复的数据给处理一把,只剩下非重复的数据,应该怎么办呢?下面就介绍一下如何处理重复的数据,有好几种方法都可以实现。
1、sort + uniq实现
root@PC1:/home/test# lsa.txtroot@PC1:/home/test# cat a.txt1 2a b1 21 2o pa bm mroot@PC1:/home/test# sort a.txt | uniq ## 删除重复行1 2a bm mo proot@PC1:/home/test# sort a.txt | uniq -u ## 取唯一行m mo proot@PC1:/home/test# sort a.txt | uniq -d ## 取重复行1 2a b
我个人认为最简单的方式实现
sort -u a.txt > 2.txt

2、awk实现
第一种
root@PC1:/home/test# lsa.txtroot@PC1:/home/test# cat a.txt1 2a b1 21 2o pa bm mroot@PC1:/home/test# sort a.txt | awk '{if(line != $0) print $0; line = $0}' ## 删除重复行1 2a bm mo p
第二种
root@PC1:/home/test# lsa.txtroot@PC1:/home/test# cat a.txt1 2a b1 21 2o pa bm mroot@PC1:/home/test# awk '!($0 in array) {array[$0]; print}' a.txt ## 删除重复行1 2a bo pm m
第三种
root@PC1:/home/test2# lsa.txtroot@PC1:/home/test2# cat a.txta bc da be fc dc dm nroot@PC1:/home/test2# awk '!a[$0]++' a.txt ## 提取不重复的行a bc de fm n
3、 sed实现
root@PC1:/home/test# lsa.txtroot@PC1:/home/test# cat a.txt1 2a b1 21 2o pa bm mroot@PC1:/home/test# sort -n a.txt | sed '$!N; ^\(.*\)\n\1$/!P; D' ###????a bm mo p1 2
文章转载自干货食堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




