构建高可用LINUX服务器Sed语法大全(学习笔记)
1.Sed 的基础格式
Sed的格式入下
sed [ -nefr] [n1,n2] acction
其中
-n: 是安静模式,只有经过sed处理的行才会显示,其他不现实
-e:表示直接在命令行上执行。是默认选项不用填写。
-f: 将Sed的操作写在一个文件里面,用的时候-f filename 就可以按照内容进行Sed操作
-r :表示支持正则表达式
n1,n2 代表的是行数
Sed的action (动作)支持如下参数
a: 表示添加,后接字符串,添加到当前行的下一行
c:表示替换,后接的字符串,用它来替换N1到N2之间的行
d:删除行
i:表示插入,后街字符串,添加到当然行的上一行
p:表示打印和-n一起使用
s: 表示搜索,还可以替换1,20s/old/new/g表示把1到20行的old换成new
Sed实例如下所示
1)显示/etc/passwd的内容,然后把2-5行删除后显示
[root@LvsMaster sed]# cat -n passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
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
2)在第2行上加上HELLOWORLD
[root@LvsMaster sed]# cat -n passwd | sed '2a Helloword!!!!'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
Helloword!!!!
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
3)在第2行后面加上两行字,例如:"This is first line!"和"This is second line!"
[root@LvsMaster sed]# cat passwd | sed '2a This is first line!! \
> This is second line'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
This is first line!!
This is second line
4) 将2~5行的内容替换成"I am a man"
[root@LvsMaster sed]# cat -n passwd | sed '2,5c "I am a man"'
1 root:x:0:0:root:/root:/bin/bash
"I am a man"
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
5)只显示2-5行的数据,注意-n和p的配合
[root@LvsMaster sed]# cat -n passwd | sed -n '2,5p'
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)获取IP地址
[root@LvsMaster sed]# ifconfig eth0 | sed -n '2p' | sed 's/^.* addr://g' | sed 's/Bcast.*//g'
192.168.0.2
Sed 用法举例说明
1) 删除行首的空格
sed 's/^[ ]* //g' filename
sed 's/^ * //g' filename
sed 's/^[[:space:]]* //g' filename
2)在行后和行前添加新行
行后命令
sed 's/pattern/& \n/g' filename
行前命令
sed 's/pattern/\n&/g' filename
3) 使用变量(使用双引号),代码如下
sed -e "s/$var1/$var2/g" filename
4)在第一行前插入文本
sed -i '1 i\"插入的字符串"' filename
5)在最后一行插入
sed -i '$a /pattern/ "插入字符串"' filename
6) 在匹配行前插入
sed -i '/pattern/ i "插入字符" ' filename
7)在匹配行后插入
sed -i '/pattern / a "插入字符"' filename
8)删除文本中空行和空格组成的行及#号注释的行
grep -v ^# filename | sed /^[[ :space: ]]* $/d | sed /^$/d
9)要将目录/modules下面所有的文件中的zhangsan都修改成list
sed -i 's/zhangsan/list/g' 'grep zhangsan -r1 /modules'
本文出自 “BrotherXing” 博客,谢绝转载!