題目:shell
有一文檔中有以下內容,寫一個shell腳本實現去重,逆序也算重複。例如a b c 和 c b abash
a b cide
d e f文檔
a d c d e fit
c bclass
c b aawk
x y zsed
x y zfile
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