shell整理(43)====shell腳本去重

題目: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
相關文章
相關標籤/搜索