sed [选项] [动作] 文件
选项:
    -n :静默模式。使用-n则只有经过sed处理的那一行。
    -e :允许多重编辑;  
    -f :结果默认输出到终端,使用-f会将结果写在一个文件内
    -i :直接对原文件进行修改。(危险)
    -p :打印模式空间的内容
    s/regexp/replacement/flag  用replacement替换模式空间由regexp匹配到的内容

动作:
    [n1[,n2]]function
    n1, n2 :表示范围,可以省略

function:
    a xxxxx:将xxxx添加到匹配到的行的后一行
    d :删除所匹配到的行
    i xxxxx:将xxxx添加到匹配到的行的前一行
    p :打印输出所匹配到的行,通常 p 会与参数 sed -n 一起运行
    s :取代,替换指定的字符串
    c :以行为单位进行替换

应用举例:

1、找出包含数字 0 的行
        # sed -n '/0/p' /tmp/passwd
        # nl /tmp/passwd | sed -n '/0/p'
    
    1、找出包含任意数字的行
        # sed -n '/[0-9]/p' /tmp/passwd
       
    2、查找不包含数字 0 的行
        # sed '/0/d' /tmp/passwd

2、删除前5行中,包括数字0的行
       
    3、将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除!
        # nl /etc/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

4、只要删除第 2 行
        # nl /etc/passwd | sed '2d'
 
    5、要删除第 3 到最后一行
        # nl /etc/passwd | sed '3,$d'
 
    6、在第二行后追加一行i am zxhk
        # nl /etc/passwd | sed '2a i am zxhk'

7、在第二行前追加一行i am zxhk
        # nl /etc/passwd | sed '2i i am zxhk'

6、在第二到第五行每行后都追加一个i am zxhk
        # nl /tmp/abc | sed '2,5a i am zxhk'
 
    7、在第二行前追加两行i am zxhk  和 i come from china
        # nl /etc/passwd | sed '2a i am zxhk\
        > drink beer ?'

8、将第2-5行的内容替换成为"i am zxhk"(以行为单位的替换与显示)
        # nl /tmp/abc | sed '2,5c i am zxhk'

9、仅列出 /etc/passwd 文件内的第 5-7 行内容
        # nl /etc/passwd | sed -n '5,7p'

10、搜索/etc/passwd有root关键字的行
        # nl /etc/passwd | sed '/root/p'

11、删除/etc/passwd所有包含root的行
        # nl /etc/passwd | sed  '/root/d'

12、将/etc/passwd中包含root的行中的bash替换为blueshell
        # nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
      (找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔)

数据的搜寻并替换
    sed 的搜寻与替代的与 vi 相当的类似!
    格式:
        sed 's/要被取代的字串/新的字串/g'
 
    13、获取本机的ip信息,如下:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
        # ifconfig eth0 | sed -n "/inet addr/{s/^[[:space:]]*//g;p}"
       
    14、获取IP地址(后面的部分予以删除)
        # ifconfig eth0 | sed -n "/inet addr/{s/^[[:space:]].*addr://;p}" | sed -n '/cast/{s/[[:space:]].*//g;p}'
        # ifconfig eth0 | sed -n "/inet addr/{s/^[[:space:]].*addr://;s/[[:space:]].*//g;p}"       
       
    15、将sysctl.conf中的net.ipv4.ip_forward = 0改为1

16、将apache的配置文件中的#ServerName www.example.com:80行首的#去掉
        # sed 's/^#\(ServerName www\)/\1/' /etc/httpd/conf/httpd.conf

17、删除file.txt中的注释行和空白行
        # sed  -e '/#/d' -e '/^$/d' file.txt

直接修改文件内容(危险动作)
    18、利用 sed 将file.txt 内每一行结尾若为 . 则换成 !
        # sed -i 's/\.$/\!/g' file.txt
 
    19、利用 sed 直接在 file.txt 最后一行加入『# This is a test』
        # sed -i '$a # This is a test' file.txt
        注意:
            $ 代表的是最后一行,a 的动作是新增,因此该文件最后新增『# This is a test』!

sed 的『 -i 』选项可以直接修改文件内容,这功能非常有帮助

Author:潇湘雨错

Linux中的sed的更多相关文章

  1. Linux中使用sed命令或awk命令修改常规配置文件

    一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...

  2. Linux中使用sed命令替换字符串小结

    sed替换的基本语法为: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的 ...

  3. 【转】linux中的sed命令

    转自:http://www.cnblogs.com/shineshqw/articles/1978122.html 功能说明: 利用script来处理文本文件. 语 法:sed [-hnV][-e&l ...

  4. Linux中的sed命令

    sed - stream editor for filtering and transforming text 流编辑器的过滤和转换文本 sed [-nerf] [动作] 参数: -i 修改源文件 危 ...

  5. Linux中的sed解析

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  6. 【Linux】linux中文本操作利器grep,awk,sed

    grep命令 grep(global search regular expression)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来.平时搜索文本中内容的时候是非常方 ...

  7. grep sed awk 3个Linux中对文件内容操作的命令

    在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...

  8. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  9. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

随机推荐

  1. Remove “System Program Problem Detected” Messages From Ubuntu

    One of my Ubuntu systems would pop up the following message multiple times after logging in: System ...

  2. Windows ICS 服务无法启动问题解决

    防火墙打不开肯定是"windows Firewall"服务没有启动.ICS服务启动不了能够通过下面方法解决: 1.找到本地连接,单击左键--属性--共享--勾选(√)--确定,如以 ...

  3. gradle编译出错:Execution failed for task ':app:compileTestDebugJava'.

    今天更新了android studio,从0.5.3升级到0.6.1版本号,结果在IDE中编译时没有问题.可是在命令行时编译就会出现下面错误: :app:compileTestDebugJava FA ...

  4. SAP-SD-ABAP-VMOD 查找和应用SD模块用户出口(user exit) 好方法 .

    针对 SD 模块,有一个专门管理 user-exit 的开发包  VMOD , 只要用tcode: se80 查看它, 会发现绝大部分的 SD 要相关的 user-exit 都能在这找到.

  5. python内存管理

    python对象三要素: identity(值):对应于内存的地址,不可修改 type(类型):不可修改 value(值): mutable :可以修改 immutable:不可以修改 引用计数 当引 ...

  6. 大陆居民身份证验证方法(java)

    1.设置接口 @Constraint(validatedBy = ChineseIdNumberValidator.class) @Target({ElementType.METHOD, Elemen ...

  7. iOS安全攻防

    iOS安全攻防 http://www.docin.com/p-760264769.html

  8. hasLayout与Block formatting contexts的学习(下)

    BFC布局规则: 内部的Box会在垂直方向,一个接一个地放置. Box垂直方向的距离由margin决定.属于同一个BFC的两个相邻Box的margin会发生重叠 每个元素的margin box的左边, ...

  9. java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序

    如果是发布到weblogic的话,可以在WebContent\WEB-INF\weblogic.xml里面配置.参考配置如下:<?xml version="1.0" enco ...

  10. ubuntu 16.04 chrome flash player 过期

    今天手贱更新了系统,发现chrome flash插件过期了 解决方法: 使用全局代理打开 chrome $: google-chrome --proxy-server="socks5://1 ...