-e command:--expression=command:进行多项编辑,表示将后续的字符串解析为sed编辑命令,对输入行应用多条sed命令时使用。
# sed -e '1,5d' -e 's/boy/girl/' dodo
# sed --expression='1,5d' --expression='s/boy/girl/' dodo
-e script-file:--expression=script-file:调用指定的sed脚本文件来处理输入的文本文件
-f script-file:--filer=script-file:调用指定的sed脚本文件来处理输入的文本文件
-h:--help:打印帮助
-i:直接修改读取的源文件(默认不修改源文件)
也可以先备份源文件然后再修改,格式如下:
# sed -i.bak '1d' filename
-n:--quiet, --silent:取消默认的输出,仅打印匹配模式的行(默认输出所有内容)
-r:sed的动作支持延伸型正规表示法的语法。(默认为基础正规表示法语法)
-V:--version:显示版本信息
a\ : 在定位行号后面加入一行或多行文本。(加入多行时除最后一行每行末尾需用"\"续行)
b lable: 将执行的指令跳至由":"建立的参考位置,如果不存在参考位置则跳转到脚本的末尾
c\: 用新的文本替换定位行的文本。
d: 删除定位行
D: 删除模式空间内的第一行
g: 把当前保持缓冲区中的内容复制到模式空间,替换掉了模式空间中当前行的内容
G: 把当前保持缓冲区中的内容追加到模式空间,追加到了模式空间的当前行后
h: 把模式空间的内容复制到当前保持缓冲区中,把原来暂存缓冲区的内容清除,添加新内容
H: 把模式空间的内容复制到当前保持缓冲区中,追加在保持缓冲区中原有内容的后面
i\: 在定位行号前面插入一行或多行文本。
l: 以可见的严格的形式列出当前模式空间中的内容
n: 读取下一个输入行,用下一个命令处理新的行
N: 追加下一个输入行到模式空间。
p: 打印匹配行
P: 打印模式空间的第一行
q: 第一个模式匹配完成后就退出Sed
r file: 从文件中读取输入行
s: 用一个字符串替换另一个字串。(默认为替换每一行中的第一个)
t label: 如果s指令发生替换操作成功,则跳到":"标记的地方,即使已经读入输入的最后一行,如果没有没有标记则到脚本末尾
T label: 如果s指令发生替换操作失败,则跳到":"标记的地方,即使已经读入输入的最后一行,如果没有没有标记则到脚本末尾
w: 将当前模式空间中的全部内容写入到文件中
W: 将当前模式空间中的第一行写入到文件中
x: 交换模式空间和文本的内容
y: 转换字元,把一个字符翻译为另外的字符(但是不用于正则表达式)
: label: 建立参考位置
{} : 有相同位址参数的指令组
#: 把注释扩展到下一个换行符之前
=: 显示文件行号
!: 不执行选中行的命令,只对所选行以外的行应用命令
sed支持特殊元字符,来进行模式查找、替换
^: 行首定位符。如:/^doiido/匹配所有以doiido开头的行
$: 行尾定位符。如:/doiido$/匹配所有以doiido结尾的行
^$: 表示空白行
.: 匹配换行符以外的字符。如:/d...do/ 匹配d后面接3个任意字符,然后do。
*: 匹配零个或多个前导字符。如:/doiido*/ 匹配所有以doiid开头,后面跟零个或多个o的行
[]: 匹配指定字符组内的任一字符。如:/[Dd]oiido/ 匹配所有包含doiido或Doiido的行
[^]: 匹配不在指定字符组内的任一字符。如:/[^Dd]oiido/ 匹配所有不是以D或者d开头的但是以oiido结尾的行
\(..\): 保存已匹配的字符。如:s/\(hello\)doiido/\1baby 这里把hello保存为标签1,如果发现hellodoiido则替换成helloboy,最多可以定义9个标签
&: 保存查找字符串用来替换其他字符串。如:s/doiido/--&--/,符号&代表查找字符串,doiido将变成--doiido--
\<: 词首定位符。如:/\<doiido/ 匹配所有包含有以doiido开头的单词的行。
\>: 词尾定位符。如:/doiido\>/ 匹配所有包含有以doiido结尾的单词的行。
x\{m\}: 连续m个x。如:/2\{8\}/ 匹配所有包含连续8个2的行。
x\{m,\}: 至少m个x。如:/2\{8,\}/ 匹配所有包含至少连续8个2的行。
x\{m,n\}: 至少m个x,但不多于n个。如:/2\{6,8\}/ 匹配所有包含连续6个到8个2的行。Ps:匹配元字符$前,必须使用反斜线\屏蔽其特殊含义。比如/\$/[]: 可以和"-"配合使用 [a-z]: 匹配所有的小写字母 [0-9]: 匹配所有的数字 [:space:]: 匹配空格 [:alnum:]: 匹配字母数字 [a-z A-Z 0-9] [:alpha:]: 匹配字母 [a-z A-Z] [:blank:]: 匹配 空格或制表键 [:cntrl:]: 匹配 任何控制字符 [:digit:]: 匹配数字 [0-9] [:graph:]: 匹配任何可视字符(无空格) [:lower:]: 匹配小写 [a-z] [:print:]: 匹配非控制字符 [:punct:]: 匹配标点字符 [:space:]: 匹配空格 [:upper:]: 匹配大写 [A-Z] [:xdigit:]: 匹配十六进制数字 [0-9 a-f A-F]
^[0-9]: 表示行第一个字符为任意数字 ^[0-9]*: 表示行首包含任意个数的数字 [0-9][0-9]*$: 表示行尾包含至少2个数字 s/\.$//g : 删除以句点结尾的行的句点 s/^[ ][ ]*//: 删除行首的任意个空格 s/^.//: 删除行首的第一个字符 s/^\///: 删除行首的“/”字符 s/SP\(..\)//g: 删除字符“SP”以及紧跟其后的两个任意字符,“SPLLY”-->“Y” ^#/: 以 '#' 开始的任何行匹配 /}^/ : 将与以 '}'(无空格)结束的任何行匹配 /} *^/ : 将与以 '}' 后面跟有 零或多个空格结束的任何行匹配 /[abc]/ : 将与包含小写 'a'、'b' 或 'c' 的任何行匹配 /^[abc]/ : 将与以 'a'、'b' 或 'c' 开始的任何行匹配
x x为指定行号 $ 最后一行 x,y 指定从x到y的行号范围 /pattern/ 查询包含模式的行 /pattern/pattern/ 查询包含两个模式的行 /pattern/,x 从与pattern的匹配行到x号行之间的行 x,/pattern/ 从x号行到与pattern的匹配行之间的行 x,y! 不包括x和y行号的行位址参数的个数 :
原文地址:http://blog.csdn.net/doiido/article/details/43987197