今天跟大家唠唠我最近搞的一个小玩意儿,代号《明剑》。
这名字听着挺唬人,就是个简单的自动化脚本,用来帮我快速清理一些重复性的工作。说白了,就是偷懒用的。
事情是这样的,我平时工作嘛经常需要处理一些文本数据,比如说从一堆日志里提取关键信息,或者批量修改文件名啥的。一开始还能手动搞定,但时间一长,就觉得太浪费时间了,而且容易出错。
我就寻思着,能不能写个脚本,让电脑自己干这些活儿?
说干就干。我一开始想用Python,毕竟语法简单,库也多。但是后来一琢磨,我这需求也不复杂,用个更轻量级的Shell脚本就够了。而且Shell脚本直接就能在Linux服务器上跑,不用安装额外的环境,方便。
OK,那就Shell!
第一步,我先把需求给理清楚了。我要实现的几个功能:
批量重命名文件:按照一定的规则,把文件名改掉。
提取日志信息:从日志文件中提取特定格式的行,保存到新文件中。
批量替换文本:把文件中的某个字符串替换成另一个字符串。
需求明确了,就开始写代码了。
批量重命名文件:我用了`find`命令和`rename`命令组合来实现。`find`命令用来查找符合条件的文件,`rename`命令用来重命名文件。
shell
find . -name ".txt" -print0 xargs -0 rename 's/\.txt/\.log/'
这行代码的意思是:在当前目录下,查找所有以`.txt`结尾的文件,然后把后缀名改成`.log`。
提取日志信息:我用了`grep`命令来实现。`grep`命令可以根据正则表达式,从文件中查找匹配的行。
shell
grep "ERROR" * > *
这行代码的意思是:从`*`文件中,查找包含"ERROR"的行,然后把结果保存到`*`文件中。
批量替换文本:我用了`sed`命令来实现。`sed`命令可以对文件进行各种编辑操作,包括替换文本。
shell
sed -i 's/old_string/new_string/g' .txt
这行代码的意思是:把当前目录下所有`.txt`文件中的"old\_string"替换成"new\_string"。`-i`选项表示直接修改文件内容,`g`选项表示替换所有匹配的字符串。
把这几个功能都写好之后,我就把它们组合成一个脚本,取名叫`*`。
为了方便使用,我还给脚本加了一些参数,比如可以指定要处理的文件类型,或者指定要提取的日志级别等等。
我把脚本放到服务器上跑了一下,效果还不错,大大提高了我的工作效率。
这个脚本还有很多可以改进的地方,比如可以增加更多的错误处理,或者增加更多的功能。但我现在觉得够用了,以后有时间再慢慢完善。
- 我直接在命令行里敲命令,但是发现太长了,容易出错。
- 后来我就把命令写到脚本里,这样就可以一次性执行了。
- 再后来我又发现脚本里的参数太死了,不够灵活。
- 于是我又给脚本增加了参数,这样就可以根据不同的需求来使用脚本了。
《明剑》这个小玩意儿虽然简单,但是确实帮我解决了不少实际问题。也让我体会到,学点编程还是很有用的。即使不是专业的程序员,也能用编程来提高自己的工作效率。
还没有评论,来说两句吧...