在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>

搞定。艺多不压身!
 

Linux的学习过程中的感悟与札记:有了vim为什么还要用sed

2015-1-17 9:45 早上在回看昨天看到的一个命令: sed 学linux,我就比较偷懒,想先有一个广度的学习,再进行深度学习。所以,我只看一下命令的功能,不去细看命令的用法。 看到sed时,...
  • wjpaiinnngg
  • wjpaiinnngg
  • 2015年01月17日 09:52
  • 516

Shell(bash)脚本学习之--------内建/外建,自定义变量和环境变量

首先我们先来看看我们系统上有那些shell $ cat /etc/shells # /etc/shells: valid login shells /bin/csh /bin/sh /usr/b...
  • u011650326
  • u011650326
  • 2013年09月26日 20:32
  • 2045

Linux sed和awk的用法

sed用法: 原文链接:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,...
  • U201017971
  • U201017971
  • 2016年03月16日 11:23
  • 3696

sed在tcl中的使用

sed -i s/'hello linux'/'hello fedora'/g /root/textfile在tcl中的使用方法如下:exec sed -i {s/hello linux/hello ...
  • zhangbg
  • zhangbg
  • 2011年03月29日 14:16
  • 2541

sed 在指定行后添加新数据

1. sed 的 追加 a 选项 cat txt aaa 111 bbb ccc 222 ddd eee 333 ggg jjj 444 kkk hhh 555 lll mmm 666 nnn jjj...
  • caoshuming_500
  • caoshuming_500
  • 2013年04月26日 03:29
  • 23530

流编辑器 SED 十分钟入门全教程

Sed 是什么?Sed 是一个脚本型的编译器,是非交互式的,也就是说sed与常见的编译器不同(比如说vim),sed没有交互式的编辑界面以及光标移动或者庞大的快捷键/功能,sed 的使用就是很简单的一...
  • longerzone
  • longerzone
  • 2014年04月30日 16:27
  • 2063

Mongodb 在windwos下安装

作为Nosql的一种,Mongodb在大数据的处理要比Mysql优好多...今天就讲下mongodb的安装, 其实很简单,在mongodb的官网下个安装包,安装的时候最好选择自定义安装,然后自己选择...
  • a1368017681
  • a1368017681
  • 2016年03月08日 10:20
  • 188

sed在行首或者行尾添加内容

原文地址:http://www.cnblogs.com/ITEagle/archive/2013/06/20/3145546.html 用sed命令在行首或行尾添加字符的命令有以下几种: 假设...
  • helei001
  • helei001
  • 2015年10月28日 22:05
  • 4359

sed在指定行插入新行

前些天备份使用mysqldump备份出的数据文件(insert形式),里面的内容没有use db_name这个语句,所以如果在脚本中执行,那么会提示no database selected,所以就想在...
  • zbszhangbosen
  • zbszhangbosen
  • 2012年04月06日 23:51
  • 30085

shell脚本学习笔记(一)—— shell基础及sed

shell既是一种命令语言,又是一种程序设计语言,有变量、函数,流程控制等。shell脚本本身是基于高层的开发,所以不宜做底层的编程,但是在高层做一些系统应用的配置和管理,恰到好处。1 学习shell...
  • Robot__Man
  • Robot__Man
  • 2016年10月23日 17:19
  • 452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在windwos下学习sed和bash脚本
举报原因:
原因补充:

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