位置: 编程技术 - 正文

Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)(shell脚本ll)

编辑:rootadmin

推荐整理分享Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)(shell脚本ll),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:shell脚本-le,shell脚本.sh,shell脚本-lt,shell脚本ne,shell脚本-lt,shell脚本wc,shell脚本一百例,shell脚本一百例,内容如对您有帮助,希望把文章链接给更多的朋友!

洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列?

ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都能找到答案。r 给出了一个取巧的方法,利用 Shell 的 $RANDOM 变量给原文件的每一行加上随机的行号然后根据这个随机行号进行排序,再把临时加上去的行号给过滤掉,这样操作之后得到的新文件就相当于被随机“洗”了一次:当然如果你的源文件每行的内容比较复杂的话就必须对这段代码进行改写,但只要知道了处理的关键技巧,剩下的问题都不难解决。

另外一篇来自苏蓉蓉的用 awk 来实现洗牌效果的随机文件排序代码分析(原贴在这里,以及对此帖的一个后续讨论,如果你没有登录帐号的话可以到这里查看精华区文章)则写的更为详细:--------------------------------------------------------------------关于洗牌问题,其实已经有了一个很好的shell解法,这里另外给三个基于AWK的方法,有错误之处还请不吝指出。

方法一:穷举

类似于穷举法,构造一个散列来记录已经打印行出现行的次数,如果出现次数多于一次则不进行处理,这样可以防止重复,但缺点是加大了系统的开销。方法二:变换

基于数组下标变换的办法,即用数组储存每行的内容,通过数组下标的变换交换数组的内容,效率好于方法一。方法三:散列

三个方法中最好的。 利用AWK中散列的特性(详细请看:info gawk 中的7.x ),只要构造一个随机不重复的散列函数即可,因为一个文件每行的linenumber是独一无二的,所以用:

随机数+每行linenumber ------对应------> 那一行的内容

Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)(shell脚本ll)

即为所构造的随机函数。 从而有:

其实大家担心的使用内存过大的问题不必太在意,可以做一个测试:

测试环境:

PM 1.4GHz CPU,G硬盘,内存M的LAPTOPSUSE 9.3 GNU bash version 3.. GNU Awk 3.1.4

产生一个五十几万行的随机文件,大约有M:拿效率较低的方法一来说:

洗牌一次所用时间:结果(文件内容省略):所以效率还是勉强可以接受的。

方法二的测试:结果(文件内容省略):效率明显好于第一个。

接着考察一下方法三的效率:结果(文件内容省略):对于一个M的文件来说已经相当不错了。--------------------------------------------------------------------

附带存一个来自 flyfly 写的 python 版本乱序代码:

Shell脚本实现生成SSL自签署证书 启用apache的mod_ssl之后需要有证书才能正常运作。写了个脚本来操作。首先要确定机器上已经有openssl。#!/bin/sh##ssl证书输出的根目录。sslOutputRoot="/etc/apach

Shell脚本中非交互式修改密码的两种方法 今天在写一个shell脚本的时候发现需要设置用户的密码,而设置密码是交互式的,这样在脚本中显然是不太好的,因此上网查找资料,发现了以下两种常

Shell脚本实现自动安装zookeeper A:本脚本运行的机器,LinuxRHEL6B,C,D,...:待安装zookeepercluster的机器,LinuxRHEL6首先在脚本运行的机器A上确定可以ssh无密码登录到待安装zk的机器B,C,D,...上,

标签: shell脚本ll

本文链接地址:https://www.jiuchutong.com/biancheng/381257.html 转载请保留说明!

上一篇:Shell脚本实现查杀子进程、僵尸进程(查看shell脚本)

下一篇:Shell脚本实现生成SSL自签署证书(shell脚本生成文件)

  • 诚信纳税的含义是什么
  • 应纳税暂时性差异是调增还是调减
  • 增值税附表一填错了,主表没错可以不更正不
  • 其他应收款有哪些情况
  • 收到增值税发票是进项还是销项
  • 固定资产折旧的会计处理
  • 联营企业和合营企业长期股权投资的方式
  • 企业买电动车做资产如何做折旧?
  • 个体户要申报哪些报表
  • 一般纳税人运费计入什么科目
  • 企业上市过程中遇到的困难
  • 代扣代缴增值税如何申报抵扣
  • 一次性收取一年服务费怎么确定收入
  • 国内废钢贸易需要资质吗
  • 工程预收款账务处理
  • 减税期间还能开3%的票吗
  • windows11怎么添加打印机驱动
  • php+js
  • 为什么篮牙耳机卡
  • 布里奇和瓦内莎
  • 巧克力山介绍
  • php sendmail
  • 新准则下的现金流量包括
  • 融资购入的固定资产如何记账
  • 企业会计准则应用指南2023pdf
  • 蓝桥杯第十四届模拟赛第三期
  • diskgenius命令
  • 提取现金准备发放工资
  • 税务滞纳金计入什么会计科目
  • 充话费自定额
  • php设计思路
  • 首涂第二十一套模板
  • 织梦使用手册
  • 富文本word
  • 给员工进行拓展活动
  • 二季度盈利三季度亏损
  • 外部审计查什么
  • 农业用肥尽量不选择
  • 以件数为印花税计税的有哪些
  • 年均复合增长率该怎么算?
  • mysql索引最大数量
  • 库存商品暂估入库是什么意思
  • 本年利润亏损还需要交所得税吗
  • 投资性房地产累计摊销
  • 专利技术转让损失会计分录
  • 如果租房没有合同怎么办
  • 一般纳税人转小规模纳税人的条件
  • 电子承兑 背书
  • 运输费用增值税税率9%
  • 不允许抵扣进项税额的是
  • 房地产企业预缴土地增值税
  • 工会经费计算公式的例子
  • 一般纳税人出现以下哪些情况时,其进项税额不得抵扣( )
  • 小规模开票免税额度是多少
  • 出资方式现金
  • 关于文化事业建设费的说法错误的是
  • 发票商品编码在发票上面体现出来吗
  • linux系统中cron命令
  • windows vista build
  • vc6运行程序
  • 通过修改注册表来修改chrome配置
  • mongo 安装
  • win10如何删除pin登录密码
  • macbook怎么开启
  • win8关闭系统更新
  • 编程python怎么学
  • 批处理执行另一个批处理
  • python简单gui
  • web开发 java
  • python 二叉堆
  • android单选
  • jQuery AJAX timeout 超时问题详解
  • Android自定义动画
  • jquery iframe写入内容
  • 广西地方税务局决算公开表
  • 山西电子税务局官网app
  • 餐饮专票可以抵扣吗
  • 超豪华小汽车需要在什么环节纳税
  • 财税专家刘杨简历
  • 珠海车船税的缴纳地点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设