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 的例子。
|
|
|