sed使用
Posted wyglog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed使用相关的知识,希望对你有一定的参考价值。
SED是一种在线的、非交互式的编辑器,它一次处理一行内容。和awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作; 编写转换程序等。
命令格式
先准备一个文件
[root@slave ~]# head /etc/passwd |grep -n ‘‘ > mypasswd
[root@slave ~]# cat mypasswd
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
处理单个文件的命令格式
sed [options] ‘[匹配模式] sed 的内部命令‘ file1
处理多个文件的命令格式
sed [options] ‘[匹配模式] [sed 的内部命令]‘ file1 file2
options
选项是可选的,意思就是没有也行
匹配模式 是可选的用于在文件中每一行进行匹配到模式,模式可以是正则,也可以是文件的行号
内部的命令也是可选的,没想到吧,但是两个单引号是必须的[root@slave ~]# sed ‘‘ mypasswd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ...以下输出省略...
注:
sed和grep不一样,不管是否找到指定的模式,它的退出状态都是0
只有当命令存在语法错误时,sed的退出状态才是非0
一些内部选项:
e command,--expression=command允许多台编辑。-h,--help打印帮助,并显示bug列表的地址。-n,--quiet,--silent取消默认输出。-f,--filer=script-file引导sed脚本文件名。-V,--version打印版本和版权信息。部分命令实例:删除:d命令$ sed ‘2d‘ example-----删除example文件的第二行
替换:s命令$ sed ‘s/test/mytest/g‘ example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。$ sed -n ‘s/^test/mytest/p‘ example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。追加命令:a命令$ sed ‘/^test/a\--->this is a example‘ example<-----‘this is a example‘被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。插入命令:i
# sed -r ‘2i1111111111111‘ /etc/hosts # sed -r ‘2i111111111> 2222222222> 3333333333‘ /etc/hosts
修改命令:c
# sed -r ‘2c1111111111111‘ /etc/hosts # sed -r ‘2c111111111111> 22222222222> 33333333333‘ /etc/hosts
选定行的范围:逗号$ sed -n ‘/test/,/check/p‘ example-----所有在模板test和check所确定的范围内的行都被打印。$ sed -n ‘5,/^test/p‘ example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。$ sed ‘/test/,/check/s/$/sed test/‘ example-----对于模板test和check之间的行,每行的末尾用字符串sed test替换
以上是关于sed使用的主要内容,如果未能解决你的问题,请参考以下文章
Sed - 查找和替换 html 代码中的文本(从一种语言到另一种语言)