sed命令的使用

2019-06-01 分类:基础内容, 常用命令 阅读(126) 评论(0)

命令格式:

sed [options] 'command' file(s)

sed [options] '要操作的行 内置命令'  file

or

sed [options] '/正则表达式/内置命令'  file

正则也可以不用/,用#@~特殊符号也可以

选项参数

-e 允许多项编辑
-n 取消默认的输出
-i 直接修改对应文件
-r 支持扩展元字符

内置命令参数

a      在当前行后添加一行或多行

c       在当前行进行替换修改

d      在当前行进行删除操作

i       在当前行之前插入文本

p      打印匹配的行或指定行

n      读入下一输入行,从下一条命令进行处理

!       对所选行以外的所有行应用命令

w      将匹配的内容写入到一个新的文件中

h      把模式空间里的内容重定向到暂存缓冲区

H      把模式空间里的内容追加到暂存缓冲区

g      取出暂存缓冲区的内容,将其复制到模式空间,覆盖该处原有内容

G      取出暂存缓冲区的内容,将其复制到模式空间,追加在原有内容后面

s       替换命令标志

g      行内全局替换

i       忽略替换大小写

 

举例(加-i才会修改文件):

-e:先删除1-9行 在进行内容替换

sed -e '1,9d' -e 's#root#admin#g' passwd

p:p和-n一般一起使用

打印包含halt的行

sed -n  '/halt/p' passwd

打印第二行的内容

sed -n  '2p' passwd

打印最后一行的内容

sed -n  '$p' passwd

a:在当前行后添加一行或多行

在第3行的下一行添加指定内容

sed '3a content' test.conf

c:在当前行进行替换修改

修改第七行的内容

sed '7c SELINUX=Disabled' /etc/selinux/config

也可以使用正则,找出以SELINUX=开头的内容的行,修改为执行内容

sed '/^SELINUX=/c SELINUX=Disabled' /etc/selinux/config

d:删除行

删除第二行的内容

sed '2d' test.conf

删除最后一行的内容

sed '$d' test.conf

使用正则删除包含mail的行

sed /mail/d test.conf

i:在当前行之前插入文本

在第三行插入的上一行添加指定内容

sed '3i content;' passwd

w:将匹配的内容写入到一个新的文件中

将包含root的行,写入新的文件当中

sed -n '/root/w newfile' passwd

n:对下一行进行操作

删除包含root行的下一行

sed '/root/{n;d}' passwd

替换root行下一行的内容

sed -n '/root/{n;s#login#aaaaaaa#;p}' passwd

!:对所选行以外的所有行应用命令

删除除了第三行的所有内容

sed '3!d' /etc/hosts

s:替换字符串,i:忽略大小写,g:行中所有匹配内容都替换

将所有root修改为admin,忽略大小写

sed 's/root/admin/gi' passwd

&代表前面匹配到的内容,下面命令的作用就是在nologin结尾的行后面添加test

sed 's/nologin$/&test/' passwd

后向引用:在正则部分加括号,第一个括号匹配的内容为\1,第二个为\2    ......,&代表正则表达式整体匹配的内容

查找出eth1网卡的ip地址

ip a s eth1 | sed -n 3p | sed 's#.*et (.*)/.*#\1#'

指定行批量添加注释。^匹配的是行首,替换为#&,即为在行首添加#号

sed '2,5s/^/#&/' test.conf

匹配内容添加注释,在root所在行的行首添加注释

sed '/root/s/^/#&/' test.conf

您可能也喜欢:

后台执行命令,ctrl + z、jobs、bg、fg

ctrl + z 把当前正在执行的命令放到后台,并且暂停   jobs 查看后台运行的命令   bg 将一个在后台暂停的命令,变成继续执行,通过job命令查询编号,例如:bg 1   fg 将后台中的命令调回前台继续运行,通过job命令查询编号,例如:fg 1 &nbs...

more

获取变量长度和变量切片

获取变量长度: [root@soulchild ~]# content=soulchild [root@soulchild ~]# echo ${content} soulchild #加井号 [root@soulchild ~]# echo ${#content} 9 #使用e...

more

top命令快捷键

c: 显示完整的命令 d: 更改刷新频率 f: 增加或减少要显示的列(选中的会变成大写并加*号) F: 选择排序的列 h: 显示帮助画面 H: 显示线程 i: 忽略闲置和僵死进程 k: 通过给予一个PID和一个signal来终止一个进程。(默认signal为15。在安全模式中此命令被屏...

more

欢迎新朋友你的到来!
还没有人抢沙发呢~
昵称
邮箱
网站

登录

忘记密码 ?

切换登录

注册