语法:
sed option 'commands' file
sed 参数 (定址)命令 文件
参数:
-n 安静模式,只显示匹配到的行。默认情况下会将全文件内容显示
-e 直接在指令列模式下进行编辑 (多个命令的组合,就是处理前一个命令处理后的结果)
-f 调用脚本文件
-i 直接对源文件进行修改(原始文件内容会发生变化,慎用!)
-r 使用扩张正则表达式
定址:
确定要处理文件的哪些行,有数字和正则两种,默认是全文本替换
数字
n 文件的第n行
n1,n2 文件的第n1到n2行
$ 文件的最后一行
正则
/abc/ 包含abc的行
1,/abc/ 从第一行到第一个包含abc的行
/123/,/abc/ 从所有123的行到abc的行 都会被打印出来
命令:
a 新增一行 a后面跟要添加的内容
示例:
在文件的第一行的后面添加new line行
sed '1a new line ' filename
在文件的第一行的后面添加new line1 、new line2 两行(\n表换行)
sed '1a new line1\nnew line2' filename
在文件的第1到3行的后面一次添加 new line行(注意,new前面有一空格)
sed '1,3a \ new line ' filename
d 删除选中的行(注意,在没有加参数-i的情况下,不会对文件内容进行删除)
示例:
删除文件的的第一行
sed '1d' filename
删除文件的第2到最后一行
sed '2,$d' filename
删除文件中以#号开头的行
sed '/^#/d' filename
p 显示匹配到的内容,一般与参数-n一起使用
示例:
显示文件的第8到15行
sed -n '3,19p' filename
显示文件中包含abc 的行
sed -n '/abc/p' filename
s 替换内容
示例:
将第1到10行的a字符替换为A
sed '1,10s/a/A/g' filename
将所有行中的的第二个a替换为A
sed 's/a/A/2' filename
将包含abc的行中的a替换为A
sed '/abc/s/a/A/' filename
将包含字符串123的后三个字符 替换为ABC
sed 's/\(123\)/.\{3\}/1ABC/' filename
在每个abc字符串后面追加123
sed 's/abc/&123/g' filename
c 替换行的内容
示例:
将第一行的内容替换为 lin1
sed '1c line1' filename
r 在匹配行的后面追加制定文件内容
示例:
在第1行的后面追加file文件的内容
sed '1r filw' filename
在包含abc的每一行后面追加file文件内容
sed '/abc/r file' filename
n 移动到匹配行的下一行
示例:
将包含abc的下一行替换为new line
sed '/abc/{n;s/.*/new line/}' filename
打印偶数行的内容
sed -n 'n;p' filename
N 追加下一行到空间模式,两行合成一行
示例:
将文件中包含abc的行与后面一行的内容合并
sed -n '/abc/N;s/\/n//;p' filename
b 跳转到制定标签
示例:
将文件中第一次出现的abc替换为ABC
sed ':aN;$!ba;s/abc/ABC/1' filename
正则匹配:
元字符 功能 示例
^ 行首定位符 /^my/ 匹配所有以my开头的行
$ 行尾定位符 /my$/ 匹配所有以my结尾的行
. 匹配除换行符以外的单个字符 /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行
* 匹配零个或多个前导字符 /my*/ 匹配包含字母m,后跟零个或多个y字母的行
[] 匹配指定字符组内的任一字符 /[Mm]y/ 匹配包含My或my的行
[^] 匹配不在指定字符组内的任一字符 /[^Mm]y/ 匹配包含y,但y之前的那个字符不是M或m的行
.. 保存已匹配的字符 1,20s/youself/\1r/ 标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为 your。
& 保存查找串以便在替换串中引用 s/my/**&**/ 符号&代表查找串。my将被替换为**my**
\< 词首定位符 /\<my/ 匹配包含以my开头的单词的行
\> 词尾定位符 /my\>/ 匹配包含以my结尾的单词的行
x\{m\} 连续m个x /9\{5\}/ 匹配包含连续5个9的行
x\{m,\} 至少m个x /9\{5,\}/ 匹配包含至少连续5个9的行
x\{m,n\} 至少m个但不超过n个x /9\{5,7\}/ 匹配包含连续5到7个9的行
sed option 'commands' file
sed 参数 (定址)命令 文件
参数:
-n 安静模式,只显示匹配到的行。默认情况下会将全文件内容显示
-e 直接在指令列模式下进行编辑 (多个命令的组合,就是处理前一个命令处理后的结果)
-f 调用脚本文件
-i 直接对源文件进行修改(原始文件内容会发生变化,慎用!)
-r 使用扩张正则表达式
定址:
确定要处理文件的哪些行,有数字和正则两种,默认是全文本替换
数字
n 文件的第n行
n1,n2 文件的第n1到n2行
$ 文件的最后一行
正则
/abc/ 包含abc的行
1,/abc/ 从第一行到第一个包含abc的行
/123/,/abc/ 从所有123的行到abc的行 都会被打印出来
命令:
a 新增一行 a后面跟要添加的内容
示例:
在文件的第一行的后面添加new line行
sed '1a new line ' filename
在文件的第一行的后面添加new line1 、new line2 两行(\n表换行)
sed '1a new line1\nnew line2' filename
在文件的第1到3行的后面一次添加 new line行(注意,new前面有一空格)
sed '1,3a \ new line ' filename
d 删除选中的行(注意,在没有加参数-i的情况下,不会对文件内容进行删除)
示例:
删除文件的的第一行
sed '1d' filename
删除文件的第2到最后一行
sed '2,$d' filename
删除文件中以#号开头的行
sed '/^#/d' filename
p 显示匹配到的内容,一般与参数-n一起使用
示例:
显示文件的第8到15行
sed -n '3,19p' filename
显示文件中包含abc 的行
sed -n '/abc/p' filename
s 替换内容
示例:
将第1到10行的a字符替换为A
sed '1,10s/a/A/g' filename
将所有行中的的第二个a替换为A
sed 's/a/A/2' filename
将包含abc的行中的a替换为A
sed '/abc/s/a/A/' filename
将包含字符串123的后三个字符 替换为ABC
sed 's/\(123\)/.\{3\}/1ABC/' filename
在每个abc字符串后面追加123
sed 's/abc/&123/g' filename
c 替换行的内容
示例:
将第一行的内容替换为 lin1
sed '1c line1' filename
r 在匹配行的后面追加制定文件内容
示例:
在第1行的后面追加file文件的内容
sed '1r filw' filename
在包含abc的每一行后面追加file文件内容
sed '/abc/r file' filename
n 移动到匹配行的下一行
示例:
将包含abc的下一行替换为new line
sed '/abc/{n;s/.*/new line/}' filename
打印偶数行的内容
sed -n 'n;p' filename
N 追加下一行到空间模式,两行合成一行
示例:
将文件中包含abc的行与后面一行的内容合并
sed -n '/abc/N;s/\/n//;p' filename
b 跳转到制定标签
示例:
将文件中第一次出现的abc替换为ABC
sed ':aN;$!ba;s/abc/ABC/1' filename
正则匹配:
元字符 功能 示例
^ 行首定位符 /^my/ 匹配所有以my开头的行
$ 行尾定位符 /my$/ 匹配所有以my结尾的行
. 匹配除换行符以外的单个字符 /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行
* 匹配零个或多个前导字符 /my*/ 匹配包含字母m,后跟零个或多个y字母的行
[] 匹配指定字符组内的任一字符 /[Mm]y/ 匹配包含My或my的行
[^] 匹配不在指定字符组内的任一字符 /[^Mm]y/ 匹配包含y,但y之前的那个字符不是M或m的行
.. 保存已匹配的字符 1,20s/youself/\1r/ 标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为 your。
& 保存查找串以便在替换串中引用 s/my/**&**/ 符号&代表查找串。my将被替换为**my**
\< 词首定位符 /\<my/ 匹配包含以my开头的单词的行
\> 词尾定位符 /my\>/ 匹配包含以my结尾的单词的行
x\{m\} 连续m个x /9\{5\}/ 匹配包含连续5个9的行
x\{m,\} 至少m个x /9\{5,\}/ 匹配包含至少连续5个9的行
x\{m,n\} 至少m个但不超过n个x /9\{5,7\}/ 匹配包含连续5到7个9的行
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30337548/viewspace-2126314/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30337548/viewspace-2126314/