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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell整理(43)====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 不是红球

如果说是红球,第一次取出一个红球,这次又取出一个红球,重复了,直接丢掉,不将它放入另一个箱子。

如果说不是红球,第一次取出一个红球,这次取出不是一个红球,不与箱子中的球重复,把它放入另一个箱子。

[[email protected] 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脚本去重的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本,awk 根据文件某列去重并且统计该列频次。

Shell脚本使用汇总整理

Bash/Shell-脚本整理(长期更新)

linux(三十)shell脚本基础知识整理

linux(三十一)shell脚本基础知识整理

Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本