shell整理(43)====shell腳本去重
阿新 • • 發佈:2017-10-31
shell
題目:
有一文檔中有如下內容,寫一個shell腳本實現去重,逆序也算重復。例如a b c 和 c b a
a b c
d e f
a d c d e f
c b
c b a
x y z
x y z
a b
z y x
z x
x y
a d c d
a b c
a b c
a
b
c
思路:打個比方
比如有一個箱子裏面裝著
2 個紅球
2 個綠球
2 個藍球
cc 文件有多少行就循環多少次
第一個循環
現在要去重,這時候我們可以從裏面隨機的拿出一個球到另一個**空的箱子(剛開始是空的);相當於腳本中的flag=`cat file | grep -E "$i|$a"`這行。
當你放入後這裏面已經有一個球了,相當於 echo $i >> file ,並把這個球給展示出來 ,相當於 echo $line
第二次循環
有兩種情況
1 是紅球
2 不是紅球
如果說是紅球,第一次取出一個紅球,這次又取出一個紅球,重復了,直接丟掉,不將它放入另一個箱子。
如果說不是紅球,第一次取出一個紅球,這次取出不是一個紅球,不與箱子中的球重復,把它放入另一個箱子。
[root@localhost shell]# cat cc.sh #!/bin/bash [ ! -f file ]&&touch file while read line do i=`echo $line|sed ‘s/ //g‘` a=`echo $i|rev` flag=`cat file |awk ‘{if($0=="‘$i‘"||$0=="‘$a‘")print "ok"}‘` if [[ "$flag" != "ok" ]];then echo $line echo $i >> file fi done< cc rm file
本文出自 “IT生活” 博客,請務必保留此出處http://dingxue.blog.51cto.com/12290895/1977696
shell整理(43)====shell腳本去重