题目:
有一文档中有如下内容,写一个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 不是红球
如果说是红球,第一次取出一个红球,这次又取出一个红球,重复了,直接丢掉,不将它放入另一个箱子。
如果说不是红球,第一次取出一个红球,这次取出不是一个红球,不与箱子中的球重复,把它放入另一个箱子。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[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
|
本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1977696,如需转载请自行联系原作者