加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 09:20:41 所属栏目:安全 来源:网络整理
导读:题目: 有一文档中有如下内容,写一个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 个蓝

题目:

有一文档中有如下内容,写一个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@localhostshell]#catcc.sh
#!/bin/bash

[!-ffile]&&touchfile
	whilereadline
	do
	i=`echo$line|sed's///g'`
	a=`echo$i|rev`
	flag=`catfile|awk'{if($0=="'$i'"||$0=="'$a'")print"ok"}'`
	if[["$flag"!="ok"]];then
		echo$line
		echo$i>>file
	fi
	done<cc
rmfile

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读