sed命令中的追加行(a)和替换行(c)

上一篇 / 下一篇  2009-11-07 14:41:32 / 个人分类:shell脚本

追加行(a)
函数参数 a 表示将资料添加到文件中。其指令格式如下:
sed [address1] a\ 使用者所输入的资料
对上述格式有下面几点说明:
函数参数 a 最多与一个位址参数配合,地址位可以使数字或查找条件,如果找不到对应的地址位的话就不进行追加,如果没有使用地址位的话就默认在每一行后都追加,包括空行。
函数参数 a 紧接着 "\" 字元用来表示此行结束 , 使用者所输入的资料必须从下一行输入。如果资料超过一行 , 则须在 每行的结尾加入"\"。
sed 执行添加动作情况如下 : 当 pattern space 内资料输出後 , sed 跟着输出使用者所输入的资料。
例 :
题目: 添加 "多工作业系统" 在含 "UNIX" 字串的资料行后面。假设 input.dat 文件的内容如下 :
UNIX
说明: 用函数参数 a 将所输入的资料添加在含 "UNIX" 字串的资料行後。
sed 命令列如下 :
sed -e '/UNIX/a\    #要追加的行的内容一定要写在下一行
多工作业系统 ' input.dat
执行上述命令後 , 其输出结果如下 :
UNIX
多工作业系统
如果是追加多行的话,命令如下:
sed -e '/UNIX/a\
多工作业系统\
追加的第二行的内容' input.dat

替换行(c)
函数参数 c 表示改变文件中的资料。其格式如下:
sed [address1[ ,address2]]c\ 使用者所输入的资料
对上述格式有下面几点说明:
函数参数 c 最多与两个位址参数配合,地址位可以使数字表示,如1,5c,也可以使/abc/,/hgj/c,,同时也可以混合的使用,当然也可以使用一个地址位。如果是输入的两位地址中第一位有效,而第2位有效,则把从第一位开始之后的行都进行替换,反之则不进行替换;也就是说会先判断第一位是否有效,有效的话就开始查找第二位,第二位找不到就默认是文件结尾。如果没有地址位,则全部行都被替换。
函数参数 c 紧接着 "\" 字元用来表示此行结束 , 使用者所输入的资料必须从下一行输入。如果资料超过一行 , 则须在 每行的结尾加入"\"。
sed 执行改变动作的情况 : 在 pattern space 内资料输出时 , sed 改变它成为使用者所输入的资料。

其命令列如下
sed -e '5c\    #这里开始要替换的内容就要换行写
Those must often wipe a bloody nose. ' input.dat
例三. 将文件中 1 至 100 行的资料区 , 替换成如下两行资料 :
How are you?
data be deleted!
则其命令列如下
sed -e '1,100c\
How are you?\
data be deleted! ' input.dat


TAG: sed

 

评分:0

我来说两句

Open Toolbar