欢迎 510814171 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2008年11月20日 星期四  您现在位于: 首页 → 技术文章 → sed函数参数大全(1)
   sed函数参数大全(1)
作者:  出处:Unix爱好者家园unix-cd.com  更新时间: 2006年01月09日 
4.1 s

      

   函数参数 s 表示替换(substitute)文件内字符串。其指令格式如下 : 
[address1[ ,address2]] s/pattern/replacemen/[flag] 
对上述格式有下面几点说明 : 

函数参数 s 最多与两个地址参数配合。 
关于 "s/pattern/replacement/[flag]"(批注[12]) 有下面几点说明: 
pattern : 它为 reguler expression 字符串。它表示文件中要被替换的字符串。 
replacement : 它为一般字符串。但其内出现下列字符有特别意义 : 

& : 代表其前 pattern 字符串。例如 
sed -e 's/test/& my car/' 资料文件名    

指令中 , & 代表 pattern 字符串 "test"。故执行后 , 数据文件的 "test" 被替换成 "test my car"。 
\n : 代表 pattern 中被第 n 个 \( 、\)(参照[附录 A]) 所括起来的字符串。例如 
sed -e  's/\(test\) \(my\) \(car\)/[\2 \3 \1]/' 资料文件名    

指令中 , \1 表示 "test"、\2 表示 "my"、\1 表示 "car" 字符串。故执行后 , 数据文件的 "test my car" 被替换成 "[my car test]"。 
\ : 可用它来还原一些特殊符号(如上述的 & 与 \ )本身字面上的意义 , 或用它来代表换行。 
flag : 主要用它来控制一些替换情况 : 
当 flag 为 g 时 , 代表替换所有符合(match)的字符串 。 
当 flag 为十进制数 m 时 , 代表替换行内第 m 个符合的字符串。 
当 flag 为 p 时 , 代表替换第一个符合 pattern 的字符串后 , 将数据输出标准输出文件。 
当 flag 为 w wfile 时 , 代表替换第一个符合 pattern 的字符串后 , 输出到 wfile 档内(如果 wfile 不存在 , 则会重新开启名为 wfile 的档案)。 
当没有 flag 时 , 则将资料行内第一个符合 pattern 的字符串以 replacement 字符串来替换 。 
delimiter : 在 "/pattern/replace/[flag] " 中 "/" 被当成一 delimiter。除了空白(blank)、换行(newline) 之外 , 使用者可用任何字符作为 delimiter。例如下述编辑指令 
        s#/usr#/usr1#g

上述命令中 \verb|#| 为 delimiter。如果用 "/" 做 delimiter , 则 sed 会将 pattern 与 replacement 中的 "/" 当成 delimiter 而发生错误。 
范例: 
题目 : 替换 input.dat 檔(后面如果没有特别指定 , 均假设文件档名为 input.dat)内 "1996" 字符串成 "1997" , 同时将这些数据行存入 year97.dat 档内。 
说明 : 用函数参数 s 指示 sed 将 "1996" 字符串替换成 "1997" , 另外用 s argument 中的 flag w 指示 sed 将替换过的资料行存入 year97.dat 档内。 
sed 命令列: 
sed -e 's/1996/1997/w year97.dat' input.dat

4.2 d

      

函数参数 d 表示删除数据行 , 其指令格式如下:

       [address1[ ,address2]] d 


对上述格式有下面几点说明: 

函数参数 d 最多与两个地址参数配合。 
sed 执行删除动作情况如下 : 
将 pattern space 内符合地址参数的数据删除。 
将下一笔资料读进 pattern space 。 
重新执行 sed script。 
范例 : 可参考 section 3.3。 

4.3 a

      

函数参数 a 表示将资料添加到文件中。其指令格式如下: 

       [address1] a\        使用者所输入的数据 

对上述格式有下面几点说明:


函数参数 a 最多与一个地址参数配合。 
函数参数 a 紧接着 "\" 字符用来表示此行结束 , 使用者所输入的数据必须从下一行输入。如果数据超过一行 , 则须在每行的结尾加入"\"。 
sed 执行添加动作情况如下 : 当 pattern space 内数据输出后 , sed 跟着输出使用者所输入的数据。 
范例 : 
题目: 添加 "多任务操作系统" 在含 "UNIX" 字符串的数据行后。假设 input.dat 档的内容如下 : 
UNIX

说明: 用函数参数 a 将所输入的数据添加在含 "UNIX" 字符串的数据行后。 
sed 命令列如下 : 
sed -e '/UNIX/a\
多任务操作系统
' input.dat 

执行上述命令后 , 其输出结果如下 : 
UNIX
多任务操作系统

4.4 i

      

函数参数 i 表示将资料插入文件中。其指令格式如下: 
       [address1] i\        使用者所输入的数据


对上述格式有下面几点说明: 

函数参数 i 最多与一个地址参数配合。 
函数参数 i 紧接着 "\" 字符用来表示此行结束 , 使用者所输入的数据必须从下一行输入。如果数据超过一行 , 则须在每行的结尾加入"\"。 
sed 执行插入动作的情况如下 : 在 pattern space 内数据输出前 , sed 先输出使用者所输入的数据。 
范例 : 
题目: 将 "文章版权属于中央研究院" 插在 input.dat 檔中含 "院长 : 李远哲" 的数据行之前。假设 input.dat 档内容如下 : 
院长 : 李远哲

说明: 用函数参数 i 将数据行 "文章版权属于中央研究院" 插在含 "院长 : 李远哲" 的数据行之前。 
sed 命令列如下: 
sed -e '/院长 : 李远哲/i\
文章版权属于中央研究院
' input.dat

执行上述命令后的输出如下 : 
文章版权属于中央研究院
院长 : 李远哲

4.5 c

      

函数参数 c 表示改变文件中的数据。其格式如下: 
     [address1[ ,address2]]c\      使用者所输入的数据


对上述格式有下面几点说明: 

函数参数 c 最多与两个地址参数配合。 
函数参数 c 紧接着 "\" 字符用来表示此行结束 , 使用者所输入的数据必须从下一行输入。如果数据超过一行 , 则须在每行的结尾加入"\"。 
sed 执行改变动作的情况 : 在 pattern space 内数据输出时 , sed 改变它成为使用者所输入的数据。 
范例 : 参考 section 3.1 之例二、三。 

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

相关搜索
查看百度中关于sed函数参数大全(1)的更多内容
查看google中关于sed函数参数大全(1)的更多内容
   文章分类
操作系统 |
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
    Linux.Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.