• ubuntu下sed命令详解 Dicky 开源中国社区


    ubuntu下sed命令详解 - Dicky - 开源中国社区

        ubuntu下sed命令详解
        7人收藏此文章, 我要收藏 发表于2个月前(2012-11-05 02:01) , 已有57次阅读 ,共0个评论

        sed简介
                      sed是一种非交互式的流编辑器,可动态编辑文件。所谓非交互式是说,sed和传统的文本编辑器不同,并非和使用者直接互动,sed处理的对象是文件的数据流(称为stream/流)。sed的工作模式是,比对每一数据行,若符合样式,就执行指定的操作。
                      sed --version       //查看sed版本
             sed语法
                      sed '操作命令'  操作对象   
              特别注意:sed并不会更改文件内容。sed的工作方式是读取文件内容,经流编辑之后,把结果显示到标准输出。因此,如果想要存储sed的处理结果,得自行运用转向输出将结果存成其他文件。
               sed实例

                      用法1:删除某一段范围的数据行
                      sed '1,4d'   test.txt
                      // 把第1到第4行数据删除,剩下的显示出来。d是sed的删除命令
                   
                     用法2:把含有"La"的数据行删除。
                     sed '/La/d'  test.txt
                     // 把含有La的行删除,剩下的显示出来。其中,/ / 代表搜索之意。
                
                    用法3:使用正则匹配
                    sed '/[0-9]\{3\}/d' test.txt
                    // 把含有"3位数"的行删除,剩下的显示出来,在样式[0-9]\{3\}中,\{3\} 表/ /要寻找的是3个数字组成的字符串

                    用法4:删除空行
                    sed '/^$/d'  test.txt
                    //删除dataf5的空白行。^ 表开头,$Snbsp;表尾部,这两者之间没有任何字符,代表该行是一空白行。

                   用法5:反向选择
                   sed '/La/!d'  test.txt
                   //把不含有La的行删除,剩下的显示出来,这里的!是否定的意思,表示不符合样式者

                 用法6:把含有"样式"的数据行显示出来
                 sed '/La/p'   test.txt
                 //用途 把含有La的行显示出来。其中,p是sed的命令,它会把目前的数据显示出来,但因为sed默认也会显示不符合的数据行,所以,应改用以下指令:
                 sed -n '/La/p' test.txt
                 //选项-n会抑制sed显示出其他资料行的默认操作,只显示符合样式的数据行。

                 用法7:替换
                 sed -n 's/La/Oo/p'  test.txt
                 //这里的s是取代的意思,第一对//中含括的字符串(La)是搜索的目标,第二对//含括的是置换的字符串(Oo)。它会把数据行中的字符串La换成Oo。
                 注意:上面这个指令,只会更换第一个出现的La而已,如要全部置换,应再加上全局的命令g
                 sed -n 's/La/Oo/gp'  test.txt

                用法8:替换/删除字符
                sed -n 's/La//p' test.txt
                //把每一行出现的第一个La删除(把La置换成空字符串,就是删除)

                用法9:替换/通配符
                sed 's/^...//'  test.txt  //把每一行开头的3个字符删除。
               sed 's/...$//'  test.txt   //把每一行末尾3个字符删除

               其他用法:
                      1. sed -n '/AAA/s/234/567/p' test.txt
                      //找到含有AAA的那一行之后,将234换成567
                      2.sed -n '/AAA/,/DDD/s/B/567/p' test.txt
                     //将含有AAA到含有DDD的那几行,皆将其中的B换成567
                     3.sed -n '2,4s/B/567/p' test.txt
                     //从第2行到第4行,皆将其中的B换成567
                     4.sed G test.txt
                     //在每一行后面增加一空行
                     5.sed '/^$/d;G' test.txt
                     //将原来的所有空行删除并在每一行后面增加一空行,这样在输出的文本中每一行后面将有且只有一空行
                     6.sed 'G;G' test.txt
                     //在每一行后面增加两行空行
                     7.sed '/regex/{x;p;x;}' test.txt
                     //在匹配式样“regex”的行之前插入一空行
                     8.sed '/regex/G'
                     //在匹配式样“regex”的行之后插入一空行
                     9.sed 10q
                     //显示文件中的前10行
                     10.sed q
                     //显示文件中的第一行
                    ……
           另外,我今天见到sed -i 的用法
        这里sed命令的-i选项,表示直接操作文件ab.file。这里是文本替换操作,将文件中的所有a都替换为b。 默认情况下,sed 是不会修改文件的,只会将操作结果打印到标准输出(屏幕)。

  • 相关阅读:
    empty()与remove([expr])的区别.转
    ThinkPHP验证码刷新随机数
    ThinkPHP的cookide保存二维数组的方法
    ThinkPHP 关联模型中查询某条记录的父级(非查询子级)
    DWZ的选择带回功能无法带回第一个value中的值
    IS_POST:判断是否存在POST提交
    ThinkPHP中Xheditor编辑器报错
    一台电脑安装两个xampp的方法
    ajax中文传送到模板显示为null
    【MySQL】MySQL事务回滚脚本
  • 原文地址:https://www.cnblogs.com/lexus/p/2855108.html
Copyright © 2020-2023  润新知