4.6 p
函数参数 p 表示印出资料。其指令格式如下 :
[address1[ , address2]] p
对于上述格式有下面几点说明 :
函数参数 p 最多与两个地址参数配合。
sed 执行印出动作的情况如下 : sed 拷备一份 pattern space 内容至标准输出档。
范例 : 参考 section 3.4 开头的内容。
4.7 l
函数参数 l , 除可将资料中的 nonprinting character 以 ASCII码列出外 , 其于均与函数参数 p 相同。例如 , 将下面 input.dat 檔中的 ^[ 以 ASCII 码印出
The Great ^[ is a movie starring Steve McQueen.
执行命令 sed -e 'l' input.dat 后 , 则输出结果如下 :
The Great \003 is a movie starring Steve McQueen.
The Great is a movie starring Steve McQueen.
上述第二行数据为 sed 的自动输出(请参照批注[]。
4.8 r
函数参数 r 表示读入它档案内容到文件中。其指令格式如下 :
[address1] r 它档名称
对于上述格式有下面几点说明 :
函数参数 r 最多与一个地址参数配合。
在指令中 , 函数参数 r 与它档名称间 , 只能有一空格。
sed 执行读入动作的情况如下 : 在 pattern space 内数据输出后 , sed 读出它档的内容跟着输出。当它档不存在时 , sed 照样执行其它指令而不会有任何错误讯息产生。
范例 : 参考 section 3.1 之例三。
4.9 w
函数参数 w 表示将文件中的写到它档内。其指令格式如下 :
[address1[ ,address2]] w 它档名称
对于上述格式有下面几点说明 :
函数参数 w 最多与两个地址参数配合。
在指令中 , 函数参数 w 与它档名称间 , 只能有一空格。
sed 执行写出动作的情况如 : 将 pattern space 内资料写到它文件内。数据写入时 , 会取代(overwrite)原来档案内的数据。另外 , 当它档不存在时 , sed 会重新产生(creat)它。
范例:参考 section 3.1 之例二。
4.10 y
函数参数 y 表示转换数据中的字符。其指令格式如下 :
[address1[ ,address2]]y /xyz.../abc.../
对于上述格式有下面几点说明 :
函数参数最多配合两个地址参数。
指令中 , /abc.../xyz.../(x、y、z、a、b、c 代表某些字符) 为 y 的 argument 。其中 abc... 与 xyz... 的字符个数必须相同。
sed 执行转换时 , 将 pattern space 内数据内的 a 字符转换成 x 字符 、b 字符转换成 y 字符 、c 字符转换成 z 字符 ...。
范例:
题目: 将 input.dat 文件中的小写字母改成大写。假设 input.dat 档的内容如下 :
Sodd's Second Law:
Sooner or later, the worst possible set of
circumstances is bound to occur.
说明:利用函数参数 y 指示 sed 做字母大小的转换。
sed 命令列如下 :
sed -e '
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
' input.dat
执行上述命令输出结果如下 :
SODD'S SECOND LAW:
SOONER OR LATER, THE WORST POSSIBLE SET OF
CIRCUMSTANCES IS BOUND TO OCCUR.
4.11 !
函数参数 ! 表示不执行函数参数。当有如下指令时 ,
[address1[ , address2]] ! 函数参数
表示 , 对符合地址参数之数据不执行函数参数。例如删除 , 除了含 "1996" 字符串 , 所有数据行 , 则执行如下命令
sed -e '/1996/!d' input.dat
4.12 n
函数参数 n 表示读入下一行资料。其指令格式如下:
[address1[ ,address2]] n
对上述格式有下面几点说明 :
函数参数 n 最多配合两个地址参数。
sed 执行读入下一行动作的情况如下 :
输出在 pattern space 的数据。
将下一笔资料读到 pattern space。
执行下一个编辑指令。
范例(可与[section4.18]中的范例比较):
题目 : 输出 input.dat 文件内偶数行资料。假设 input.dat 档内容如下:
The
UNIX
Operation
System
说明: 在命令列上
以选项 -n , 将数据输出的控制权(参照[section2.5])转给指令。
利用函数参数 n 将下一行数据(偶数行)取代 pattern space 内的资料行(奇数行)。
利用函数参数 p 将 pattern space 内的数据(偶数行)输出。
最后 , 整个输出只有原先文件内的偶数行数据。
sed 命令列如下 :
sed -n -e 'n' -e 'p' infro.dat
执行上述命令后 , 输出的结果如下 :
UNIX
System
|
|
|