今夜IT网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 315|回复: 0

[Linux相关] Linux sed命令的基本使用

[复制链接]

68

主题

68

帖子

312

积分

骑士

积分
312
发表于 2017-2-4 17:44:00 | 显示全部楼层 |阅读模式
sed(Stream Editor):流编辑器
一次只读取一行
模式空间
1、sed语法:
sed [option] "script" FILE...
2、选项:
-n:静默模式,不输出模式空间中的内容
-r:使用扩展的正则表达式
-f:/path/to/sed_script_file:指定sed脚本文件
-e 'script' -e 'script' :指定多个编辑脚本
-i:直接修改读取的文件内容,而不是输出到终端
3、编辑命令:
d:删除
p:打印
i \text:匹配内容上面增加text内容
a \text:匹配内容西面增加text内容
r /path/to/somefile:在制定位置把另外一个文件的内容插入进来
w /path/to/somefile:将符合条件的所有行保存至指定得文件中
= :显示符合条件行的行号
例如:# sed -n '/^UUID/=' /etc/fstab
s///:查找条件可以使用模式,但要替换的内容不行
4、地址定界:
startline,endline:1,3
/pat1/,/pat2/
/pattern/
用法:
sed [options] 'addr1[,addr2]编辑命令' FILE ...
sed [options] "addr1[,addr2]编辑命令" FILE ...
5、正则表达式:
基本的:
字符:
    .
    []
    [^]
次数:
    *
    \?
    \{m,n\}
锚定:
    ^
    $
    \<,\b
    \>,\b
分组:
    \(\)
引用:
    \1,\2,...
扩展:
字符:
    .
    []
    [[:lower:]],[[:punct:]],[[:alnum:]]
次数:
    *
    ?
    +
    {m,n}
锚定:
    ^
    $
    \>,\b
    \<,\b
或:
    a|b
分组:
    ()
引用:
    \1,\2,...
sed '地址定界s@查找条件@替换文本@'
6、修饰符:
g:global,全局替换
i:ignore-case,不区分字符大小写
7、例子:
1、将selinux的enforcing改成disabled
# sed 's@^SELINUX=enforcing@SELINUX=disabled@g' /etc/selinux/config
2、删除/etc/init.d/functions文件中的空白行
# sed '/^$/d' /etc/init.d/functions
3、删除/etc/inittab文件中位于行首的#号
# sed 's@^#@@g' /etc/inittab
4、删除/etc/rc.d/rc.sysinit文件夹中以#后跟至少一个空白字符开头的行的行首的#和空白字符
# sed 's@^#[[:space:]]\{1,\}@@g' /etc/rc.d/rc.sysinit
5、删除/boot/grub/grub.conf文件中行首的空白字符
# sed 's@^[[:space:]]\{1,\}@@' /boot/grub/grub.conf
6、取出一个文件路径的目录名称
# echo /etc/sysconfig/network/ | sed 's@[^/]\{1,\}/\?$@@'



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 官方QQ群

QQ|小黑屋|手机版|今夜IT网 (京ICP备11034012号) 

Powered by Discuz! X3.2

快速回复 返回顶部 返回列表