Linux常用命令之sed命令_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3095 | 回复: 0   主题: Linux常用命令之sed命令        上一篇   下一篇 
snisn
注册用户
等级:新兵
经验:51
发帖:84
精华:0
注册:2011-10-23
状态:离线
发送短消息息给snisn 加好友    发送短消息息给snisn 发消息
发表于: IP:您无权察看 2015-9-24 10:07:34 | [全部帖] [楼主帖] 楼主

Sed简介

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

命令格式:sed -options script file 或 sed -options -f scriptfile file


系统:Ubuntu11.10

sed:GNU sed version 4.2.1


options命令项

-n   关闭自动输出模式空间的内容

-e script   要执行的脚本命令

-f file   要执行的脚本命令文件,如果是大量脚本,你可以将他们写入一个文件然后用-f指定该文件作为要执行的命令

-i[suffix]   就地编辑文件,如果指定了后缀[suffix],则备份源文件

-l N   指定要编辑的行,可指定多行,如1,3表示1 2 3行

--posix   禁用所有GUN扩展

-r   在脚本命令中使用扩展正则表达式

-s   将同时处理的多个文件分开,而不是将他们作为一个整体的长数据流

-u   从输入文件导入最小少的数据,更频繁的刷新输出缓存


script脚本命令

a   在当前行后面加入一行文本

b lable   分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾

c   用新的文本改变本行的文本

d   从模板块(Pattern space)位置删除行

D  删除模板块的第一行

i   在当前行上面插入文本

h   拷贝模板块的内容到内存中的缓冲区

H  追加模板块的内容到内存中的缓冲区

g   获得内存缓冲区的内容,并替代当前模板块中的文本

G  获得内存缓冲区的内容,并追加到当前模板块文本的后面

l   列表不能打印字符的清单

n  读取下一个输入行,用下一个命令处理新的行而不是用第一个命令

N  追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。

p   打印模板块的行

P  打印模板块的第一行

q  退出Sed

r file   从file中读行

w file   写并追加模板块到file末尾

W file   写并追加模板块的第一行到file末尾。

t label   if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾

T label   错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾

!   表示后面的命令对所有没有被选定的行发生作用

s/re/string   用string替换正则表达式re

=   打印当前行号码

#   把注释扩展到下一个换行符以前

以下的是替换标记:
* g 表示行内全面替换
* p 表示打印行
* w 表示把行写入一个文件
* x 表示互换模板块中的文本和缓冲区中的文本
* y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)



例子:

将sed.ini文件中以Well开始的行后面添加 end;

1
sed -e '/^Well/a end;' /etc/sed.ini

删除sed.ini文件的第7行到末尾的内容

1
sed -e '7,$d' /etc/sed.ini

删除sed.ini中所有包含this的行

1
sed -e '/this/d' /etc/sed.ini

将sed.ini文件中的this替换成that

1
sed -e 's/this/that/g' /etc/sed.ini

将sed.ini文件中以Well开始的行的Well替换成Ok,并只打印匹配到的行

1
sed -n -e 's/^Well/Ok/p' /etc/sed.ini

将sed.ini文件中的loveable替换成lovers

1
sed -e 's/(love)able/1rs/g' /etc/sed.ini

多点编辑命令-e

将sed.ini文件中Well开始的行的Well替换成Ok,并且将行内的here后面加this

1
sed -e 's/^Well/Ok/g' -e '/here/a this' /etc/sed.ini

读取sed.php中的内容并显示在sed.ini中所有以this开始的行后面

1
sed -e '/^this/r /etc/sed.php' /etc/sed.ini

将sed.ini中所有包含php的行写入到sed.php文件中

1
sed -e '/php/w /etc/sed.php' /etc/sed.ini

将---插入包含this的行前面

1
sed -e '/this/i---' /etc/sed.ini

将sed.ini中包含this的行放到缓冲区并删除该行,然后将包含that的行用缓冲区的内容替换掉

1
sed -e '/this/{h;d}' -e '/that/{p;x}' /etc/sed.ini

将sed.ini中包含this的行放到缓冲区,然后将其添加到包含that的行后

1
sed -e '/this/{h;d}' -e '/that/G' /etc/sed.ini

将sed.ini中包含this的行的下一行中的that替换成this

1
sed -e '/this/{n;s/that/this/} /etc/php.ini

打印sed.ini的内容直到第5行然后退出

1
sed -e '5q' /etc/sed.ini

打印sed.ini并显示行号

1
sed -e '=' /etc/sed.ini

将sed.ini文件中包含this的行用the new words替换

1
sed -e '/this/c    he new words' /etc/sed.ini

打印sed.ini文件的第二行

1
sed -n -e '2p' /etc/sed.ini




--转自



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论