《懒人Shell脚本》之一——遍历文件并格式化输出文件
来源:互联网 发布:音频频谱分析软件 编辑:程序博客网 时间:2024/05/26 07:28
【背景】
1.项目开发中,急需要根据资源路径res下的文件,生成如下三种格式的文件。
格式一:
#define IDR_CEF_0001 101#define IDR_CEF_0002 102...#define IDR_CEF_0122 222
格式二:
{“about.html”, IDR_CEF_0001},
{“addProbe.html”, IDR_CEF_0002},
…
{“img/helpimg/help17.PNG”, IDR_CEF_0122},
格式三:
IDR_CEF_0001 HTML “res\about.html”
IDR_CEF_0002 HTML “res\addProbe.html”
IDR_CEF_0122 HTML “res\img\helpimg\help17.PNG”
【着急情况半手工实现如下】
1.C++实现获取文件名称,输出到txt文档中,拷贝到Excel以便按列处理。
2.构造格式一左数据,组合成格式一数据。
3.结合notepad++正则表达式匹配,构造格式二、三内容,组合成格式二、三数据。
缺点非常明显:
1.手动,很容易路径弄错,文件少弄,后期Bug不可评估。
2.耗时也接近3个小时。
3.如果又有新的文件如(Inner,outer,other)三份资源文件,需要操作3次。
总之,很傻,很笨。
【Shell脚本实现】
源码如下:
#! /bin/bashfunction read_dir(){for file in `ls $1`doif [ -d $1"/"$file ]; thenread_dir $1"/"$fileelseecho $1"/"$filefidone}#output filestouch out_files.txtread_dir "/home/laoyang/test/res" > out_files.txt#recurse files #1.delete the front path /home/laoyangcat out_files.txt | sed 's/\/home\/laoyang\///g' > out22_files.txt#get line numslinenums=`cat out22_files.txt | wc -l`echo $linenums#construct format_files.txt#1.#define IDR_CEF_0001 101rm -rf format_file1.txtfor((i=1;i<=$linenums;i++)) do echo "#define IDR_CEF_"${i}$[ 100 + ${i} ] >> format_file1.txtdone#2. {"about.html", IDR_CEF_0001},cat out22_files.txt | sed 's/test\/res\///g' > out33_files.txtawk '{print $2}' format_file1.txt > format_file2_1.txt #IDR_CEF_0001 formatsed 's/$/},/g' format_file2_1.txt > format_file2_2.txt sed 's/^/{"/g' out33_files.txt > out4_file.txtsed 's/$/",/g' out4_file.txt > out5_file.txtpaste -d " " out5_file.txt format_file2_2.txt > format_file2.txt#3.IDR_CEF_0001 HTML "res\\about.html"rm -rf format_file3_2.txtfor((i=1;i<=$linenums;i++)) do echo "HTML" >> format_file3_2.txtdonecat out22_files.txt | sed 's/test\///g' > out44_files.txtcat out44_files.txt | sed 's#\/#\\\\#g' > out55_files.txt cat out55_files.txt | sed 's#^#"#g' > out66_files.txtcat out66_files.txt | sed 's#$#"#g' > out77_files.txtpaste -d " " format_file2_1.txt format_file3_2.txt > format_file3_tmp.txtpaste -d " " format_file3_tmp.txt out77_files.txt > format_file3.txtmkdir format_rstmv format_file1.txt format_file2.txt format_file3.txt ./format_rst/
优点:
1.快,不会丢失,有多少文件就是多少文件。
2.可以复用,新增文件或者其他模块也有类似文件,直接跑一遍脚本即可。
Shell脚本在文本逐行读取、按列匹配、正则匹配有先天的优势。所以Shell实现是很好的选择。
如果用C++实现代码行数会几百甚至上千,且匹配会非常复杂。
作者:铭毅天下
转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/49834859
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!
- 《懒人Shell脚本》之一——遍历文件并格式化输出文件
- 《懒人Shell脚本》之二——语料库的格式化输出
- shell脚本格式化文件
- 《懒人Shell脚本》之五——一键修改分布式系统配置文件
- 将文件格式化并输出
- 《懒人Shell脚本》之三——微博分类信息获取与格式化
- 《懒人Shell脚本》之七——格式化处理数据存入数据库实现
- shell脚本:一次读取文件的一行,并输出
- shell脚本:一次读取文件的一行,并输出
- shell脚本:一次读取文件的一行,并输出
- shell脚本遍历目录文件
- 《懒人Shell脚本》之十——统计多重路径下的不同扩展名文件及个数
- 《懒人Shell脚本》之十——统计多重路径下的不同扩展名文件及个数
- shell 脚本格式化输出
- shell 脚本格式化输出
- Oralce SQLPlus 以及shell脚本中spool输出到文件时的格式化输出
- Oralce SQLPlus 以及shell脚本中spool输出到文件时的格式化输出
- 遍历目录下的文件---shell脚本
- BST:二叉排序树算法
- C语言——逗号表达式
- 剑指Offer-20-顺时针打印矩阵
- Apache与Tomcat的联系和区别
- 四维矩阵、四维数组
- 《懒人Shell脚本》之一——遍历文件并格式化输出文件
- CC2540 UART数据失真分析
- Communication System
- Android 之 Retrofit 入门介绍
- 牛顿迭代解立方根
- Java与Mysql开发中的特殊字符(包括Emoji)
- 基于模板匹配的数字识别
- Maven五种scope含义的说明
- 高级UIKit-04(NSUserDefaults、NSKeyedArchiver、对象归档方法) - 回读(IOS)