• sed命令


    今天,看鸟哥的私房菜,关于sed的用法现在做如下总结,也可以看成是读书笔记。学习sed的时候先忘掉其他的内容,比如:cut。看完此博客将学会以下几个用法:

    功能:以每行为单位进行处理,对数据进行替换、删除、新增等功能。

    有两个模式:模式空间(part)和

    (1)如何在屏幕展示/etc/passwd的内容,但是不展示第二行到第五行的内容?首先,得明确sed只是展示在屏幕,并没有将原文件的内容删除,故此处用的是“展示”。

    (2)如何在上例中的第二行中添加一行?添加两行呢?

    (3)如何整行替换呢?将上例的第二行到第五行换成其他数据呢

    (4)如何在/sbin/ifconfig下只展示IP

    (5)查看文件/etc/man.config,不展示#行和空行?

    如果以上5点都已经知道了,此博客就没有浏览的必要了。

    下面一一解答:

    sed [option] [action]

    (1)nl /etc/passwd |sed '2,5d'

    可以看出:

    d:删除,其后没有跟任何参数

    2,5:用  数字,数字  即  n1,n2  表示第几行到第几行。

    '':一对单引号,必须是一对单引号,将sed之后所有需要的动作【即action】,用单引号必须括起来。

    同理,单独只去掉某一行如:第二行,则sed '2d'即可;其中,$表示最后一行,这样,第二行到最后一行,则用sed '2,$d'即可。

    那么,删除第二行到第五行用d,如果只想展示第二行到第五行,怎么做呢?

    nl /etc/passwd | sed -n '2,5p'

    其中,-n选项:是静默模式如果不加-n,则会列出所有符合的行,而且sed匹配到的行重复列出,故使用-n,并同时使用p,将需要的内容展示在屏幕

    p:打印,将选择的数据印出,一般和-n同时使用

     

    (2)nl /etc/passwd |sed '2a hello world'

    a:是增加,是在指定行号的下一行新增,本例中是2,即第二行的下一行新增一行。空格后表示的是新增一行的内容。当需要新增好几行数据时,直接按\即可,然后输出所需要的字符串,如:

    那要是在指定行的上一行新增多条字符串呢?

    i:在指定行的上一行新增字符串

    (3)nl /etc/passwd |sed '2,5c no 2-5number'

     

    c:替换,后跟需要替换的字符串即可,相信能够看明白此操作。

    (4)/sbin/ifconfig eth0|sed -n '2p'|sed -r 's/^.*inet addr://g'|sed -r 's/Bcast:.*$//g'

    需要一步一步分析:

    /sbin/ifconfig eth0|sed -n '2p':选出有IP地址的那一行

    sed -r 's/^.*inet addr://g'

    -r:表示使用正则表达式,也可省略不写。

    s/需要替换的字符串/替换后新的字符串/g:也就是将开头到inet addr:这一段用空格替换

     sed -r 's/Bcast:.*$//g':同样,这个语句是将Bcast之后的替换成空格。

    (5)cat /etc/man.config|grep 'MAN'|sed 's/^#.*$//g'|sed  '/^$/d'

    grep 'MAN':在文件中找到'MAN'的行;

    sed 's/^#.*$//g':使用正则表达式将行首为#的替换成空行

    sed  '/^$/d':将空行直接删除。^$表示空行(^代表行首,$代表行尾)。

  • 相关阅读:
    QTP自学攻略
    自动检查页面链接是否有效
    使用Loadrunner进行接口测试
    缺陷管理方案
    python读取文本、配对、插入数据脚本
    QTP 中对象操作
    python学习笔记(三)--条件语句
    npm WARN uninstall not installed in /Users/hrt0kmt/node_modules: "xxx"
    appium mac 下 安装及踩坑
    homebrew -v 或homebrew -doctor报错请检查 .bash_profile是否有误
  • 原文地址:https://www.cnblogs.com/wzhuo/p/6711386.html
Copyright © 2020-2023  润新知