在windwos下学习sed和bash脚本
2007-10-03 02:30
288 查看
为了让自己在以后处理类似于把整本《单干》分割成一章一个文件的形式,以便可以方便的转换成语音。这类苦活可以不苦着干,我用这两天学习了sed和bash脚本。
本来想用cmd脚本和sed配合的,不过cmd脚本确实太弱了,用起来不舒适。突然又有些怀念在linux里用bash脚本的日子了。凡是要定期反复做的事情都是悄无声息的自动完成的。呵呵。
那个vbs脚本动不动就要用com,让人看着写着都累。
我在网上找到了一个叫win-bash项目。呵呵。不过,这个项目的目标是在windows上实现一个1.X.X版本的bash,所以没有自动完成,没有很多脚本的语法,不过,实际用的时候只用来解析sh脚本而已。而且,我希望可以脚踩黄河两岸,取windows与linux之众长。呵呵。
我还用GetGUNWin32安装了GUNWin32包。可以用熟悉的rm了。哈哈。sed也包含其中,还有大量的linux下的软件。配合脚本用起来非常方便自如。
下面的就是我的脚本内容,毕竟自己的数学能力只有30分而已,所以写得很难看。不过,能抓“老鼠”就行。
主脚本文件:
#!/bin/bash
#整理文章标题的格式
sed -f temp1.sed 单干.txt >单干2.txt
echo 已生成单干2.txt
#获得文章标题位置
sed -n -e /^第.*章.*/p 单干2.txt >mulu.txt
echo 已生成$head的行号
#获得每一章的开头位置
for head in `cat mulu.txt`
do
sed -n -e /^$head/= 单干2.txt >>head.txt
echo 已生成$head的行号
done
#获得每一章的结尾位置
sed -e 1d head.txt >end.txt
echo 已生成每一章的结尾的行号
#将每一章单独保存为文件
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
do
if [ "$i" = "0" ]
then
#处理序言部分
cmd1="sed -n -e 1p head.txt"
end=`$cmd1`
let end=$end-1
title=xuyan
cmd="sed -n -e 1,"$end"p 单干2.txt "
go=`$cmd`
echo $go >$title.txt
continue
elif [ "$i" = "14" ]
then
#处理最后一章
echo 处理最后一章
cmd1="sed -n -e "$i"p head.txt"
head=`$cmd1`
cmd3="sed -n -e "$head"p 单干2.txt"
title=`$cmd3`
cmd="sed -n -e "$head",$p 单干2.txt"
go=`$cmd`
echo $go >$title.txt
continue
else
#处理其它章节
cmd1="sed -n -e "$i"p head.txt"
cmd2="sed -n -e "$i"p end.txt"
head=`$cmd1`
end=`$cmd2`
cmd3="sed -n -e "$head"p 单干2.txt"
title=`$cmd3`
let end=$end-1
cmd="sed -n -e "$head","$end"p 单干2.txt"
go=`$cmd`
echo $go >$title.txt
echo 已经生成$title
continue
fi
done
rm head.txt end.txt 单干2.txt
echo ok!
temp1.sed:
/^第.*章.*/s/ //g
运行结果:
D:/temp>bash temp.sh
已生成单干2.txt
已生成单干mulu.txt
已生成第一章纵览:新型单干模式的行号
已生成第二章成功法则的行号
已生成第三章:时代大转变(THEGREATSHIFTINWHAT'SPOSSIBLE)的行号
已生成第四章做你最善长的的行号
已生成第五章如何建立你的业务系统的行号
已生成第六章有关新公司的谣传的行号
已生成第七章你为什么不适合当一个自由代理商或特许经销商的行号
已生成第八章管理终极外包的行号
已生成第九章从一些创新型公司中得到的经验的行号
已生成第十章评价你的商业计划的行号
已生成第十一章什么时候辞掉你白天的工作的行号
已生成第十二章:资金流动性竞赛的行号
已生成第十三章发现错误-吸取教训的行号
已生成第十四章突然轮到我了的行号
已生成每一章的结尾的行号
已经生成第一章纵览:新型单干模式
已经生成第二章成功法则
已经生成第三章:时代大转变(THEGREATSHIFTINWHAT'SPOSSIBLE)
已经生成第四章做你最善长的
已经生成第五章如何建立你的业务系统
已经生成第六章有关新公司的谣传
已经生成第七章你为什么不适合当一个自由代理商或特许经销商
已经生成第八章管理终极外包
已经生成第九章从一些创新型公司中得到的经验
已经生成第十章评价你的商业计划
已经生成第十一章什么时候辞掉你白天的工作
已经生成第十二章:资金流动性竞赛
已经生成第十三章发现错误-吸取教训
处理最后一章
ok!
D:/temp>
搞定。艺多不压身!
本来想用cmd脚本和sed配合的,不过cmd脚本确实太弱了,用起来不舒适。突然又有些怀念在linux里用bash脚本的日子了。凡是要定期反复做的事情都是悄无声息的自动完成的。呵呵。
那个vbs脚本动不动就要用com,让人看着写着都累。
我在网上找到了一个叫win-bash项目。呵呵。不过,这个项目的目标是在windows上实现一个1.X.X版本的bash,所以没有自动完成,没有很多脚本的语法,不过,实际用的时候只用来解析sh脚本而已。而且,我希望可以脚踩黄河两岸,取windows与linux之众长。呵呵。
我还用GetGUNWin32安装了GUNWin32包。可以用熟悉的rm了。哈哈。sed也包含其中,还有大量的linux下的软件。配合脚本用起来非常方便自如。
下面的就是我的脚本内容,毕竟自己的数学能力只有30分而已,所以写得很难看。不过,能抓“老鼠”就行。
主脚本文件:
#!/bin/bash
#整理文章标题的格式
sed -f temp1.sed 单干.txt >单干2.txt
echo 已生成单干2.txt
#获得文章标题位置
sed -n -e /^第.*章.*/p 单干2.txt >mulu.txt
echo 已生成$head的行号
#获得每一章的开头位置
for head in `cat mulu.txt`
do
sed -n -e /^$head/= 单干2.txt >>head.txt
echo 已生成$head的行号
done
#获得每一章的结尾位置
sed -e 1d head.txt >end.txt
echo 已生成每一章的结尾的行号
#将每一章单独保存为文件
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
do
if [ "$i" = "0" ]
then
#处理序言部分
cmd1="sed -n -e 1p head.txt"
end=`$cmd1`
let end=$end-1
title=xuyan
cmd="sed -n -e 1,"$end"p 单干2.txt "
go=`$cmd`
echo $go >$title.txt
continue
elif [ "$i" = "14" ]
then
#处理最后一章
echo 处理最后一章
cmd1="sed -n -e "$i"p head.txt"
head=`$cmd1`
cmd3="sed -n -e "$head"p 单干2.txt"
title=`$cmd3`
cmd="sed -n -e "$head",$p 单干2.txt"
go=`$cmd`
echo $go >$title.txt
continue
else
#处理其它章节
cmd1="sed -n -e "$i"p head.txt"
cmd2="sed -n -e "$i"p end.txt"
head=`$cmd1`
end=`$cmd2`
cmd3="sed -n -e "$head"p 单干2.txt"
title=`$cmd3`
let end=$end-1
cmd="sed -n -e "$head","$end"p 单干2.txt"
go=`$cmd`
echo $go >$title.txt
echo 已经生成$title
continue
fi
done
rm head.txt end.txt 单干2.txt
echo ok!
temp1.sed:
/^第.*章.*/s/ //g
运行结果:
D:/temp>bash temp.sh
已生成单干2.txt
已生成单干mulu.txt
已生成第一章纵览:新型单干模式的行号
已生成第二章成功法则的行号
已生成第三章:时代大转变(THEGREATSHIFTINWHAT'SPOSSIBLE)的行号
已生成第四章做你最善长的的行号
已生成第五章如何建立你的业务系统的行号
已生成第六章有关新公司的谣传的行号
已生成第七章你为什么不适合当一个自由代理商或特许经销商的行号
已生成第八章管理终极外包的行号
已生成第九章从一些创新型公司中得到的经验的行号
已生成第十章评价你的商业计划的行号
已生成第十一章什么时候辞掉你白天的工作的行号
已生成第十二章:资金流动性竞赛的行号
已生成第十三章发现错误-吸取教训的行号
已生成第十四章突然轮到我了的行号
已生成每一章的结尾的行号
已经生成第一章纵览:新型单干模式
已经生成第二章成功法则
已经生成第三章:时代大转变(THEGREATSHIFTINWHAT'SPOSSIBLE)
已经生成第四章做你最善长的
已经生成第五章如何建立你的业务系统
已经生成第六章有关新公司的谣传
已经生成第七章你为什么不适合当一个自由代理商或特许经销商
已经生成第八章管理终极外包
已经生成第九章从一些创新型公司中得到的经验
已经生成第十章评价你的商业计划
已经生成第十一章什么时候辞掉你白天的工作
已经生成第十二章:资金流动性竞赛
已经生成第十三章发现错误-吸取教训
处理最后一章
ok!
D:/temp>
搞定。艺多不压身!
相关文章推荐
- 脚本学习之路之----我要熟悉awk, sed, rpm 工具
- Linux学习总结(33)——Linux Java启动关闭bash脚本
- Linux学习之十四(bash脚本编程之三条件判断及算术运算)
- Shell脚本学习笔记(七)--sed和awk
- 安卓学习笔记--bash脚本
- Linux学习之道:bash脚本
- bash 脚本学习笔记
- 高级bash脚本学习指南
- Linux学习-高级shell脚本编程(二)初识sed和gawk
- Bash脚本学习
- bash脚本学习心得
- shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)
- Bash 脚本编写与sed,awk使用
- Shell脚本学习之sed详解
- Shell脚本的学习&&sed
- [linux学习笔记]第2天:时间管理,命令帮助信息,文本查看,权限及用户管理,BASH和变量,脚本
- shell脚本学习笔记 (流编辑器sed)
- WINDWOS编程学习1:WINMsg
- linux的shell(bash)脚本学习
- Linux学习之道:bash编程脚本