欢迎 seiya700 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心

加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 网站留言 论坛 站内搜索 卓越资源 源代码

域名查询 网站空间 域名主机 数据库空间

 
今天是:2012年02月05日 星期日  您现在位于: 首页 → 技术文章 → sed函数参数大全(4)
   sed函数参数大全(4)
作者:  出处:Unix爱好者家园unix-cd.com  更新时间: 2006年01月09日 
4.22 G

      

函数参数 G 与 g 唯一差别是 , sed 执行 g 时 , 数据盖掉(overwrite) pattern space 内原来的数据 , 而 G , 数据则是 "添加(append)" 在 pattern space 原来数据后。例子请参考 section 3.2 例一。 

4.23 x

      

   函数参数 x 表示交换 hold space 与 pattern space 内的数据。其指令格式如下 : 

     [address1 ,[address2]] x 


函数参数 x 大部份与其它处理 hold space 的函数参数一起配合。例如 , 将 input.dat 文件内第 1 行资料取代第 3 行资料。此时 , 用函数参数 h 与 x 来配合。其中 , 以函数参数 h 将第 1 资料存入 hold space  当第 3 行数据出现在 pattern space , 以函数参数 x 交换 hold space 与 pattern space 的内容。如此 , 第 3 行资料就被第 1 资料替代。其命令列如下: 

sed -e '1h' -e '3x' input.dat

4.24 b、:label

      

函数参数 : 与函数参数 b 可在 sed script 内建立类似 BASIC 语言中 GOTO 指令的功能。其中 , 函数参数 : 建立标记;函数参数 b 将下一个执行的指令 branch 到标记处执行。函数参数 : 与 b , 在 script file 内配合的情况如下 
    
                   .
                   .
                   .
              编辑指令m1
              :记号
              编辑指令m2
                   .
                   .
                   .               
              [address1,[address2]]b [记号]                  

其中 , 当 sed 执行至指令 [address1,[address2]]b [记号] 时 , 如 pattern space 内的数据符合地址参数 , 则 sed 将下一个执行的位置 branch 至由 :记号(批注[14])设定的标记处 , 也就是再由 "编辑指令m2" ... 执行。另外 , 如果指令中函数参数 b 后没有记号 , 则 sed 将下一个执行的指令 branch 到 script file 的最后 , 利用此可使 sed script 内有类似 C 语言中的 case statement 结构。
范例 : 
题目: 将 input.dat 文件内数据行的开头字母重复印 40 次。假设 input.dat 档的内容如下 :

A
B
C

说明: 用指令 b p1 与 :p1 构成执行增加字母的循环(loop) , 同时在字母出现 40 个时 , 也用指令 b 来跳出循环。下面就以文件内第一行数据 "A" 为例 , 描述它如何连续多添加 39 个 "A" 在同一行: 
用指令 s/A/AA/(参照 section4.1)将 "A" 替换成 "AA"。 
用指令 b p1 与 :p1 构成循环(loop) , 它目的使上述动作被反复的执行。每执行一次循环 , 则数据行上的 "A" 就多出一个。例如 , 第一次循环数据行变成 "AA" , 第二次循环资料行变成 "AAA" ...。 
用指令 [ABC]\{40\}/b(批注[15]) 来作为停止循环的条件。当数据行有连续 40 个 A 出现时 , 函数参数 b 将执行的指令跳到最后 , 停止对此行的编辑。 
同样 , 对其它数据行也如同上述的方式执行。 
sed 命令列如下 : 
sed -e '{
:p1
/A/s/A/AA/
/B/s/B/BB/
/C/s/C/CC/
/[ABC]\{40\}/b
b p1
}' input.dat

4.25 t

      

基本上 , 函数参数 t 与 函数参数 b 的功能类似 , 除了在执行 t 的 branch 前 , 会先去测试其前的替换指令有没有执行替换成功外。在 script file 内的情况如下: 
                   .
                   .
                   .
              编辑指令m1
              :记号
              编辑指令m2
                   .
                   .
                   .
              s/.../.../
              [address1,[address2]]t [记号]
              编辑指令m3

其中 , 与函数参数 b 不同处在于 , 执行函数参数 t branch 时 , 会先检查其前一个替换指令成功与否。如成功 , 则执行 branch  不成功 , 则不 branch , 而继续执行下一个编辑指令 , 例如上面的编辑指令m3。 
范例: 
题目 : 将 input.dat 文件中资料 A1 替换成 C1、C1 替换成 B1、B1 替换成 A1。input.dat 档的内容如下: 
代号
B1
A1
B1
C1 
A1
C1

说明 : input.dat 文件中全部数据行只需要执行一次替换动作 , 但为避免数据被替换多次 , 所以利用函数参数 t 在 sed script 内形成一类似 C 语言中 case statement 结构 , 使每行数据替换一次后能立即用函数参数 t 跳离替换编辑。 
sed 命令列 : 
sed -e '{
s/A1/C1/
t
s/C1/B1/
t
s/B1/A1/
t
}' input.dat

--------------------------------------------
常用的 regular expression


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

      

常用的 regular expression 
普通字符  由普通字符所组成的 regular expression 其意义与原字符串字面意义相同。  
^字符串  限制字符串必须出现于行首 。 
$字符串  限制字符串必须出现行尾。  
.  表示任意一字符。 
[...]  字符集合, 用以表示两中括号间所有字符当中的任一个 ,如 [^...]表示两中括号间所有字符以外的字符。 
-&  字符集合中可用"&"指定字符的范围。  
*  用以形容其前的字符(或字符集合)可重复任意多次 。 
\n  表示嵌入新行字符(imbedded new line character)。  
\(...\)  于 regular expression 中使用"\(" "\)"来括住一部份的 regular expression  其后可用"\1"来表示第一个被"\(" "\)"括住的部份。若 regular expression 中使用数次的"\(" "\)"来括住不同的部份 , 则依次使用"\1","\2","\3",...(最多可到"\9")。

 (本文已被浏览 4905 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:sed函数参数大全(3)
下篇文章:GNU Make使用手册(1)
 相关文章:
模仿sed部分功能,c 的面向对象描述 SED单行脚本快速参考
shell学习资料汇总 Linux/Unix流编辑器Sed学习资料
sed命令详解 sed工具介绍实例
SED单行脚本快速参考(Unix 流编辑器) sed函数参数大全(3)
sed函数参数大全(2) sed函数参数大全(1)
在unix里替换文字的shell程序 sed学习笔记
在unix里替换文字的程序 sed应用实例

相关搜索
查看百度中关于sed函数参数大全(4)的更多内容
查看google中关于sed函数参数大全(4)的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    Copyright (c) 2001-2011 Unix-cd.com. All Rights Reserved.