在windwos下学习sed和bash脚本

原创 2007年10月03日 02:30:00
为了让自己在以后处理类似于把整本《单干》分割成一章一个文件的形式,以便可以方便的转换成语音。这类苦活可以不苦着干,我用这两天学习了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 --/^.*.*/p 单干2.txt >mulu.txt
echo 已生成
$head的行号
#获得每一章的开头位置
for head in `cat mulu.txt`
do
    sed 
--/^$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>

搞定。艺多不压身!
 

相关文章推荐

bash妙解学习脚本之路

  • 2013年02月21日 10:44
  • 113KB
  • 下载

高级BASH脚本学习

  • 2014年07月03日 12:34
  • 1.48MB
  • 下载

Shell脚本学习之sed详解

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理。 一、什么是sed?     sed 是一种在线编辑器,它一次处理一行内容。sed是非交互式的编辑器。它不会...
  • engledb
  • engledb
  • 2014年02月21日 15:29
  • 15062

shell 脚本完成对日志文件的提取之sed 学习

前言 为日志文件的提取打基础 正文 sed 是一种在线编辑器,它一次处理一行内容。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 文件内容并没有 改变,除非...

Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本

sourcesource /root/.bashrc #让修改后的配置文件在不重启系统的情况下生效。source等同于. 环境变量目录/etc/profile /etc/profile....
  • OneGoal
  • OneGoal
  • 2016年11月14日 11:16
  • 915

shell脚本学习笔记 (流编辑器sed)

shell脚本学习笔记(sed)

Shell脚本学习之sed详解

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理。 一、什么是sed?     sed 是一种在线编辑器,它一次处理一行内容。sed是非交互式的编辑器。它不会...

shell脚本学习:不得不细心之sed和grep,sort和uniq,从细节看“认真”

今天下午忙了一个下午写一个小脚本,中间出了很多错误,发现有关sort和uniq的细节问题,而且发现了自己写脚本一些小的方面的疏忽,编程是一门讲究严禁的学问,必须一字不差,否则轻则结果错误,重则无法运行...
  • deansrk
  • deansrk
  • 2011年07月28日 17:53
  • 2873

shell脚本学习:正则表达式之sed,tr篇

在linux中,主要通过sed命令来替换文本,通过正则表达式匹配出的命令,可以用sed来灵活的替换掉,极大的节省了工作量。可以说,sed是shell脚本里替换的最主要力量,也是shell脚本里用的最多...

shell脚本编程学习笔记(3)sed命令的使用

sed指令的简单介绍
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在windwos下学习sed和bash脚本
举报原因:
原因补充:

(最多只允许输入30个字)