Chinaunix首页 | 论坛 | 博客
  • 博客访问: 319952
  • 博文数量: 60
  • 博客积分: 2781
  • 博客等级: 少校
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-23 16:42
文章分类

全部博文(60)

文章存档

2011年(33)

2010年(27)

分类:

2010-06-12 11:25:47

首先明确不同的程序语言用于不同的需求,Shell脚本常用于系统管理工作。
------------------------------------------------------------------------
脚本语言和编译型语言的差异-->
对于编译型语言的好处是高效,缺点则是:它们多半运作于底层,所处里的是字节、整数、浮点数或是其它机器层级的对象。比如说,在C++里,很难进行将一个目录里所有的文件复制到另一个目录中之类的简单操作。

对于脚本语言的好处是,它们多半运行在比编译型语言高的层级上,能够轻易处理文件与目录之类的对象。缺点是:效率不如编译型语言。针对不同的需求,应该选择合适的方法完成任务,不必大费周折。
-------------------------------------------------------------------
脚本编程语言的例子很多,有perl,pyton,ruby,shell等,因为shell是各unix系统之间通用的功能,并且经过了POSIX的标准化,因此用心写一次shell,就能应用到很多系统上。
shell脚本之前,应该熟知系统常用的命令,因为shell脚本的骨架就是由命令搭建起来的。

-------------------------------------------------------------------

作为shell编程的开始,最基础的就是文本操作,查找与替换。还应该学习正则表达式,它是某些系统工具的基础。

正则表达式分为一般字符特殊字符特殊字符又称为元字符(metacharacter

.(点号)匹配任一字符,*匹配之前任意数目(包括0)的单个字符,[xxx]匹配方括号中的任一单个字符,若方括号首字符为^,则匹配的字符不包括方括号内的。

一般字符表示它本身,而特殊字符若想表示它本身,需要转义,即反斜杠\

^xxx匹配行开头为xxx的字符串,xxx$匹配行结尾为xxx的字符串。

注意到*匹配单个字符的任意数目,而没有限制,所以出现了区间表达式\{ \},可以明确表示所需匹配的次数:

\{n\}匹配n次,\{n, \}至少n次,\{n, m\}nm次。且nm的值必须介于0RE_DUP_MAX()之间,通过getconf命令可以获得系统设定的RE_DUP_MAXgetconf RE_DUP_MAX

^$这两个特殊字符成为锚点(anchor)’^$’匹配空行,非常好用,可以结合grep -v预先去除空行。注意^$仅在起始和结尾处具有特殊字符。

以上讨论的是BRE(基本正则表达式),另外还有ERE(扩展正则表达式)

匹配0个或1个前置正则表达式,+匹配一个或多个前置正则表达式。

|(管道符)交替:匹配一系列字符串,如fast|slow|shutdown,优先级最低。

(…)分组:和交替结合使用。注意这里的圆括号不是匹配字符,而是充当特殊字符。

BRE不同的是,在ERE中,^$永远是meta字符,无论是在起始还是结尾处。

\<匹配单词的开始,\>匹配单词的结束。


GREP程序在文本中查找指定模式,并打印匹配行。grep可以理解为g/re/p(全局性匹配re,并打印)。

SEDstream  editor,流编辑器)经常用于文本替换。

对于sed,它并不改变输入的文件,而只是将操作结果输出到标准输出(屏幕),如果想将结果保存,则需要重定向。

sed 's/pattern/replace/':该命令只匹配本行第一次出现的模式,用s命令查找正则表达式,用replace替换pattern。斜杠为分界定位符,也可以是其他的标点符号,如分号,逗号等。

sed -e 'command-line1' -e 'command-line2' ...说明-e选项可以携带多个sed命令。

sed -f text.sed file.txt1 > file.txt2 说明-f选项后跟sed命令文件(sed命令写在同一个文件中),作用于输入文件,结果输出到txt2中。

sed 's/pattern/replace/g'中,s命令表示搜索模式,g命令表示全局搜索,如果不加g命令则只搜索第一个匹配成功的字符串。

cut(筛选出每行中选定的字段)-c选定字符范围,-f选定字段范围,-d选定分界符。

join 用来结合记录中具有相同键值的字段的文件。

awk 是一种编程语言,基本功能用于选定字段,或者重新安排字段顺序。文件中存在多条记录,每条记录对应多个字段。每个字段用分隔符隔开,分隔符可以是空白,也可以是其他符号。awk 'pattern' {action} [file], -F选项说明了字段分隔符,-v ‘OFS=value’将value作为输出的分隔符。action动作可以是print $1即表示打印第一个字段的值,$0表示整条记录,$NF表示字段的个数。

阅读(1011) | 评论(0) | 转发(0) |
0

上一篇:Zend Framework 学习笔记

下一篇:XML 学习笔记

给主人留下些什么吧!~~