sed命令中的参数(!、q、=)

上一篇 / 下一篇  2009-11-09 18:15:36 / 个人分类:shell脚本

 !
函数参数 ! 表示不执行函数参数。当有如下指令时 ,
sed -e '[address1[ , address2]] ! 函数参数 ' input
表示 , 对符合位址参数之资料不执行函数参数,不在地址位之内的执行函数参数。
例如删除 , 除了含 "1996" 字串 的所有资料行都执行删除行命令 :
sed -e '/1996/!d' input.dat
还如替换资料行中123为abc,但是除了含有zanhua字符串的行:
sed -e '/zanhua/!s/123/abc/' input.dat

q
函数参数 q 表示跳离 sed 。其指令格式如下:
sed -e [address1] q
对上述格式有下面几点说明 :
函数参数 q 最多配合一个位址参数。
sed 执行跳离动作时 , 它停止输入 pattern space 资料 , 同时停止资料送到标准输出档。
例 :
对文件档执行 script_file 内的编辑指令 , 除非遇到 "Linux" 字串。
说明: 无论 script_file 内是何种指令 , 使用者只要在命令列上用指令/Linux/q , 函数参数 q 在遇到"Linux" 时会强迫做跳离动作,命令结束。
sed 命令列如下 :
sed -e '/Linux/q' -f script_file input.dat
还如 sed -e '/zanhua/q' -e 's/abc/123' input.dat
 
=
函数参数 = 表示印出资料的行数。其指令格式如下:
[address1 ,[address2]] =
对上述格式有下面几点说明 :
函数参数 = 最多配合两个位址参数。
执行时 , 行数将在资料输出前先输出。
例 :
题目: 印出 input.dat 档内资料行数。假设 input.dat 的内容如下 :
The UNIX
Operating System
说明 : 用函数参数 = 来印出资料的行数。
sed 命令列如下 :
sed -e '=' input.dat
执行上述命令後 , 输出的结果如下 :
1
The UNIX
2
Operating System


TAG:

 

评分:0

我来说两句

Open Toolbar