这周写了两个脚本,不算太难,但是每一个都让我有所感悟.....
第一个脚本是这样的:分析一个12G大小的 apache cookie_log,从中删选出指定数据然后分析统计
我的原先做法是: sed 's/.../../' | awk '{...}' ,即先用sed命令对数据进行替换,增加修改成我希望的样子,然后再用awk分析统计
这样看貌似没什么问题,但是如果原始数据很大(比如我这里的12G),执行起来就很耗时了
我自己思考了一下原因,觉得是由于由于管道(|),使得我相当于对文件读取了两次(当文件很大的时候),鉴于此我后来只用一个命令awk处理,并且把指令写到一个文件中,结果发现,效率果然有了较大的提高,只花了原先的1/10时间。
所以当我们处理一个较大文件,并且需要比较复杂的分析时,请减少管道的使用,尽量在一个awk命令中完成,并且最好把命令写成文件的形式,既保证可读性又提高复用性
第二个脚本是这样的:需要将一个项目里(有11个svn分支)中的某四个方法,替换成另外的四个方法
我的第一反应是写四个类似这样的方法:find . -name "*.java" | xargs sed -i 's/../../'
但是我自己一想,这样岂不是要遍历目录4遍,效率肯定不行,于是乎,我自己写了个遍历文件夹的方法,如果遇到的是文件就进行内容替换(4种),如果还是目录则进行子目录递归,这样保证了我只需要遍历一次
等我实现这种方式以后,我发现了一个很不好的地方,就是脚本有点长,可读性也不太好(虽然我抽了几个函数),于是我又用第一种老土的方式又实现了一遍,结果是出乎意料的
首先,代码可读性好,逻辑清楚(1.先拉svn分支,然后调用replace函数替换内容,其中replace函数就是那四个find替换命令)
其次,效率也很好(应该比我自己写的遍历目录方法快),因为你自己写遍历函数需要通过for,if这的shell语句去控制逻辑,并且中间过程中还需要执行外部命令,譬如cd,但是find 就不一样了,所以都这些都在一个命令中完成,因此它的效率会更高
所以,通过这个脚本我发现,写脚本首先要注重可读性和可维护性,其次善于用现有的命令去实现自己需要的功能(譬如这里的find遍历目录功能)
分享到:
相关推荐
标题"allegro的脚本方便快速画图"指出了这个压缩包中的脚本主要关注Allegro中的绘图操作。通过使用Skill脚本,设计师能够创建自定义的快捷方式或宏,以一键完成复杂的图形绘制任务。这不仅减少了手动操作的时间,也...
linux系统中使用shell脚本对oracle存储过程进行编译
本文将深入探讨“收获,不止Oracle 脚本”这一主题,主要关注2013年4月27日修正的版本,并提醒用户在使用时要谨慎。 Oracle脚本,通常指的是SQL(Structured Query Language)脚本,是用于操作Oracle数据库的语言。...
通过以下几个步骤,我们将深入探讨这一过程中的关键技术点: 1. **数据库的创建与配置**:包括如何在SQL Server中创建数据库文件及表结构。 2. **WINCC变量与数据库表的映射**:确保WINCC中变量与数据库表字段类型...
IDEA中编写并运行shell脚本的实现是指在Integrated Development Environment(IDE)中编写、配置和运行shell脚本的过程。该过程需要安装bashsupport插件,配置插件,安装git软件,配置IDEA环境,创建Bash Script文件...
【标题】:“通过ISS打包ISS脚本”是指使用Inno Setup这款软件来创建Windows平台的安装程序的过程。Inno Setup是一款免费的安装制作工具,它能够帮助开发者将应用程序及其依赖项打包成用户友好的安装包,便于在...
然而,对于非root用户来说,确实有一些方法可以实现对shell脚本的调用,尤其是在开发和调试过程中。下面我们将深入探讨如何在Android应用中执行shell脚本以及相关知识点。 首先,我们需要理解Android的沙箱机制。每...
wincc中使用VBS脚本读写SQLServer数据库文件
《Genesis2000拼板脚本》是一个专注于在印刷电路板(PCB)设计领域中的工具,主要用于优化PCB布局的拼版过程。在PCB设计中,拼版是将多个独立的电路板单元组合成一个大板,以便于制造和降低成本。 Genesis2000是一款...
在本文档中,我们将重点介绍WinCC中C脚本和VBS脚本的使用,特别是针对变量的置位、复位、取反以及读写操作等常用功能。WinCC是西门子提供的一款用于监控和控制工业系统的软件,而C脚本和VBS脚本是WinCC中支持的两种...
批处理书籍-windows,写脚本神奇啊
Intouch 支持使用 OLE (Object Linking and Embedding) 对象,这意味着可以在脚本中访问和控制其他支持 OLE 的应用程序的对象。 ##### 3.2 使用 ActiveX 控件编写脚本 ActiveX 控件是 Microsoft 提供的一种技术,...
在这个压缩包中,包含了四个常用的脚本文件,每个都有特定的功能,下面将详细解释这些脚本的作用及其相关的知识点。 1. **根据PCB直接列出BOM(Bill of Materials)**: 这个脚本的主要功能是将PCB设计中的元件...
因此,在使用前,确保脚本来自可信赖的源,这一点至关重要。此外,使用这类脚本应遵守金山打字通的使用条款,避免因使用非官方工具而可能引起的账号封禁或其他法律风险。 对于那些不熟悉脚本语言或自动化工具的初学...
本文将详细介绍WinCC 7.0中C脚本的工作原理,以及如何进行脚本解密,帮助读者更好地理解和利用这一功能。 一、WinCC 7.0 C脚本简介 WinCC 7.0支持的C脚本基于Microsoft的Visual C++,允许开发者用C语言编写控制逻辑...
标题中的“自写的一个脚本处理器.可模拟鼠标键盘点击”揭示了这是一个使用Delphi编程语言编写的程序,它的主要功能是处理特定的脚本,并能够模拟用户的鼠标和键盘操作。这个工具可能被用于自动化测试、游戏挂机、...
标题“ad logo导入脚本.zip”表明这是一个包含与在Altium Designer(AD)中导入徽标(logo)相关的脚本的压缩文件。Altium Designer是一款广泛使用的PCB(印制电路板)设计软件,用于电子设计自动化。在这个压缩包中...
这个脚本允许用户将单色位图图像方便地导入到PCB布局中,以便在最终产品上添加公司标识或其他定制图形。 导入Logo到PCB设计中是一个细致的过程,通常涉及以下步骤: 1. **准备图像**:首先,你需要一个单色位图...
在某些情况下,如果加密的脚本依然在运行,可以使用调试工具来监控脚本的运行过程,通过内存中尚未完全加密的脚本片段来逆推出原始代码。但这种方法难度较高,需要较高的技术能力和经验。 总的来说,WinCC C、VB...
2. **战斗系统脚本**:RPG的核心在于战斗,这里的脚本可能包括新的战斗模式、技能特效、敌人AI等,让你的战斗过程更加激烈和策略性。 3. **图形与界面脚本**:通过这些脚本,你可以改变游戏的UI设计,创建独特的...