Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103113972
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-18 23:23:19

4.13 q

      

函数参数 q 表示跳离 sed 。其指令格式如下: 

     [address1] q 




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

函数参数 q 最多配合一个地址参数。 
sed 执行跳离动作时 , 它停止输入 pattern space 数据 , 同时停止数据送到标准输出文件。 
范例 : 
题目: 对文件文件执行 script_file 内的编辑指令 , 除非遇到 "Linux" 字符串。 
说明: 无论 script_file 内是何种指令 , 使用者只要在命令列上用指令/Linux/q , 函数参数 q 会强迫 sed 遇到 "Linux" 时做跳离动作。 
sed 命令列如下 : 
sed -e '/Linux/q' -f script_file  input.dat

4.14 =

      

函数参数 = 表示印出资料的行数。其指令格式如下: 

     [address1 ,[address2]] = 


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

函数参数 = 最多配合两个地址参数。 
执行时 , 行数将在数据输出前先输出。 
范例 : 
题目: 印出 input.dat 文件内资料行数。假设 input.dat 的内容如下 : 
The UNIX
Operating System

说明 : 用函数参数 = 来印出资料的行数。 
sed 命令列如下 : 
sed -e '=' input.dat

执行上述命令后 , 输出的结果如下 : 
1
The UNIX
2
Operating System

4.15 #

      

在 script file 内 , 函数参数 # 后的文字为注解。当注解文字超过多行时 , 其行间须以 "\" 换行字符相隔。

4.16 N

      

函数参数 N 表示添加下一笔资料在 pattern space 内。其指令格式如下: 

     [address1 ,[address2]] N 


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

函数参数 N 最多配合两个地址参数。 
sed 执行时 , 将下一行数据读入并添加在 pattern space 内 , 数据行间以换行字符(embedded newline character)分隔。此外 , 在替换时 , 换行字符可用 \n 来 match。 
范例 : 
题目: 将下述两行数据合并。假设 input.dat 的内容如下 : 
The UNIX
Operating System

说明 : 先利用函数参数 N 将两行数据置于 pattern space 内 , 在利用函数参数 s/\n/ / 将两行数据间的分隔号 \n 以空白替代 , 如此两行数据变成一行输出。 
sed 命令列如下 : 
sed -e 'N' -e 's/\n/ /' input.dat

执行上述命令后 , 其输出的结果如下: 
The UNIX Operating System

4.17 D

      

函数参数 D 表示删除 pattern space 内的第一行资料。其指令格式如下: 

     [address1,address2]D


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

函数参数 D 最多配合两个地址参数。 
函数参数 D 与 d 的比较如下 : 
当 pattern space 内只有一数据行时 , D 与 d 作用相同。 
当 pattern space 内有多行资料行时 
D 表示只删除 pattern space 内第一行资料  d 则全删除。 
D 表示执行删除后 , pattern space 内不添加下一笔数据 , 而将剩下的数据重新执行 sed script  d 则读入下一行后执行 sed script。 
范例 : 参考 section 3.3 的第二个例子。 

4.18 P

      

函数参数 P 表示印出 pattern space 内的第一行资料。其指令格式如下: 

     [address1,address2] P 


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

函数参数 P 最多配合两个地址参数。 
P 与 p , 除了面对的 pattern space 内的数据行数不同外 , 其它均相同。 
范例(可与[section4.12]中的范例): 
题目 : 输出 input.dat 文件内奇数行资料。假设 input.dat 档内容如下: 
The
UNIX
System

说明: 在命令列上 
以选项 -n , 将数据输出的控制权(参照[section2.5])转给指令。 
利用函数参数 N 将偶数行添加至 pattern space 内奇数行后。 
利用函数参数 P 将 pattern space 内的第一行(奇数行)输出。 
在奇数行输出后 , pattern space 内剩下的数据行(偶数行)则被放弃输出。最后 , 整个输出只有原先的奇数行数据。 
sed 命令列 : 
sed -n -e 'N' -e 'P' infro.dat

执行上述命令后 , 输出的结果如下 : 
The
System

4.19 h

      

函数参数 h 表示暂存 pattern space 的资料至 hold space。其指令格式如下: 

     [address1 ,[address2]] h 


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

函数参数 h 最多配合两个地址参数。 
sed 执行暂存动作时 , 会盖掉(overwrite) hold space 内原来的数据。 
当 sed 全部执行结束时 , hold space 内数据会自动清除。 
范例 :参考 section 3.4 的例子。 

4.20 H

      

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

4.21 g

      

   函数参数 g 表示与函数参数 h 相反的动作 , 它表示将 hold space 内资料放回 pattern space 内。其指令格式如下 : 

     [address1,address2]g




函数参数 g 最多配合两个地址参数。 
sed 执行放回动作时 , 数据盖掉(overwrite)(批注[13]) pattern space 内原来的数据。 
例题 :参考 section 3.4 的例子。 
阅读(617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~