码迷,mamicode.com
首页 > 系统相关 > 详细

linux sed

时间:2018-08-29 14:37:33      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:缓存   etc   匹配   ifconf   行编辑器   rtu   名称   网卡名称   操作   

    ? sed 行编辑器,在内存缓存中一行一行处理,可以批量处理文件
        ○ 默认不修改文件
        ○ -n 自动关闭打印
        ○ -i 修改文件
        ○ -r 扩展正则表达式
        ○ -e 多点编辑,同时操作
        ○ p 打印
        ○ d 删除
        ○ a\ 下一行追加
        ○ i\ 上一行插入
        ○ c\ 替换行

    ? sed -n ‘1p‘ flie 只打印第一行(关闭自动打印)
    ? sed -n ‘2p‘ file 打印第二行
    ? ifconfig | sed -n ‘2p‘
    ? ifconfi | sed -n ‘3,5p‘ 打印3-5行
    ? sed -n‘/^[^#]/p‘ file 打印非井号开头的行
    ? sed ‘/^#/d‘ file 删除#开头的行
    ? sed -i.bak ‘/^#/d‘ file 先备份文件为.bak,再删除文件
    ? sed 10 | sed -n ‘1~2p‘ 打印奇数行
    ? sed 10 | sed -n ‘2~2p‘ 打印偶数行
    ? sed 10 | sed ‘5a\XXXX‘ 在第五行下一行追加XXX
    ? sed 10 | sed ‘5a\XXXX\nYYY‘ 在第五行下一行追加两行
    ? sed 10 | sed ‘5,8a\XXXX‘ 在第5-8行下一行追加XXX
    ? sed 10 | sed ‘5,8c\XXXX‘ 在第5-8行替换成XXX
    ? sed 10 | sed ‘5!d‘ 除了第五行全删除
    ? sed ‘s@/sbin/nologin@/test/test@‘ file 把/sbin/nologin替换为/test/test
    ? sed ‘GRUB_CMDLINE_LINUX/s/"$/ net.ifnames=0&/‘ /etc/default/grub 追加修改网卡名称显示信息
        ○ 查找 sed ‘GRUB_CMDLINE_LINUX‘
        ○ 替换 s/A/B/ A替换成B
    ? sed -r ‘GRUB_CMDLINE_LINUX/s/(.*)"/\1 net.ifnames=0 "/‘/etc/default/grub


    ? ifconfig eth0 | sed -n ‘2p‘ | sed ‘s/^.*net //‘ | sed ‘s/ netmask,*//‘ 获取ip地址
    ? ifconfig eth0 | sed -n ‘2p‘ | sed -e ‘s/^.*net //‘ -e ‘s/ netmask,*//‘ 获取ip地址
        ○ sed ‘s/^.*net //‘ net之前替换为空
        ○ sed ‘s/ netmask.*//‘ netmask之后替换为空
        
    ? sed -r ‘s/^#(NameVirtualHost)/\1/‘ /etc/httpd/conf/httpd.conf 删除单行#
    ? sed -r ‘@^#<virtualHost@,@</#virturlHost>@s@#@@‘ /etc/httpd/conf/httpd.conf 删除指定范围的#



sed高级用法

模式空间:sed命令每次处理一行记录所用的空间
保持空间:模式空间处理的数据没有完全结束,可以放到保持空间,临时中转站

    ?P:打印模式空间开端至\n内容,并追加到默认输出之前
            §
    ?h: 把模式空间中的内容覆盖至保持空间中
            § sed 10 | sed ‘1!G;h;$!d‘ 倒序(不是第一行执行h,不是最后一行删除)
    ?H:把模式空间中的内容追加至保持空间中
    
    ?g: 从保持空间取出数据覆盖至模式空间
    
    ?G:从保持空间取出内容追加至模式空间
    
    ?x: 把模式空间中的内容与保持空间中的内容进行互换
    
    ?n: 读取匹配到的行的下一行覆盖至模式空间
            § sed 10 | sed -n ‘n;p‘ 打印偶数行
    ?N:读取匹配到的行的下一行追加至模式空间
            § sed 10 | sed ‘N;D‘ 打印最后一行
    ?d: 删除模式空间中的行
    

?D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环

linux sed

标签:缓存   etc   匹配   ifconf   行编辑器   rtu   名称   网卡名称   操作   

原文地址:https://www.cnblogs.com/lizitest/p/9552918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!