2019-06-19

一. 三剑客sed命令

sed - stream editor for filtering and transforming text

          流编辑器工具(文件字符流进行处理编辑)

作用: 擅长对文件的行进行处理  修改编辑文件内容

语法:sed [参数] '条件 指令(如何处理)'  文件信息

            sed -n '/oldboy/p'  oldboy.txt


sed命令执行原理 (图)

      三剑客命令:按行处理文件信息

    sed命令操作实践

    sed命令能完成什么事情: 增    删    改    查 ( 处理文本文件  配置文件-sed  日志文件-grep/awk)

二.  如何查询信息:

1.  需求:查询单行信息:

          01. 将第3行信息进行显示

                 sed -n '3p' person.txt


          02. 将有oldboy的行进行显示

                  sed -n '/oldboy/p' person.txt


2.  需求:查多行信息       -n  取消默认输出            p  print  输出信息

    01. 将第3行~第5行信息进行显示  区间用到: ,

            sed -n '3,5p' person.txt


      02. 将oldboy ~ alex信息进行显示    --注意的是会显示匹配文件的一个贪婪性

      sed -n '/oldboy/,/Alex/p' person.txt


3. 只查看第3行和第5行内容

      sed -n '3p;5p' person.txt


    只查看有oldboy和alex信息

      sed -n '/oldboy/p;/Alex/p' person.txt

三.  如何删除文件信息

    01. 将第三行信息进行删除

          sed -i '3d' person.txt                -i  真实修改文件内容        d  delete 删除文件信息


    02. 将有oldboy信息的行进行删除       

          sed -i '/oldboy/d' person.txt  

    03. 将oldboy和Alex信息的行进行删除 

          方法一: sed '/oldboy/d;/Alex/d' person.txt


          方法二:sed -r '/oldboy|Alex/d' person.txt


四.  如何增加信息

    01. 在第3行后面增加新的一行  内容 oldboy62

          sed '3a oldboy62' person.txt          a  append 在指定条件行的下面添加信息

    02. 在第5行前面增加新的一行  内容 oldboy62

          sed '5i oldboy62' person.txt          i  insert 在指定条件行的上面添加信息

    03. 在第3行前面加oldboy62,同时在第5行后面加oldboy62

          sed -e '3ioldboy62' -e '5aoldboy62' person.txt      -e  识别多个指令信息,可以让多个指令同时执行


    04. 在文件最后一行后面,添加多行信息

          sed -e '$aoldboy62' person.txt     


          sed '$aoldboy62\noldboyedu62' person.txt


五. 替换修改文件内容:

    01. 将123456 信息 显示 为 <123456>

        方法1: echo 123456|sed -r 's#(.*)#<\1>#g'


          方法2:echo 123456|sed  's#.*#<&>#g'


          方法3:echo 123456|sed -r 's#([0-9]+)#<\1>#g'


    02. 将123456 信息 显示 为 <123><456>

          echo 123456|sed -r 's#([0-9]{3})#<\1>#g'


          echo 123456|sed -r 's#(.{3})#<\1>#g'


        03  . 将123456 信息 显示 为 <1><2><3><4><5><6>

          echo 123456|sed -r 's#([0-9])#<\1>#g'


          echo 123456|sed -r 's#([0-9]{1})#<\1>#g'


          echo 123456|sed -r 's#(.)#<\1>#g'


六.    修改文件内容: 

        使用-i参数问题:

    01. -i.bak 表示对源文件进行备份  -- i参数后面不能跟其他参数

        sed -ri.bak 's#(.*)#<\1>#g' oldboy.txt

        查看: ll oldboy.txt*


    02. 在利用-i替换文件内容信息,-i参数和-n参数一定不能同时使用

        替换的错误方法

        sed -n '/Alex/s#COO#CEO#gp' person.txt


        sed -ni.bak '/Alex/s#COO#CEO#gp' person.txt


        正确替换方法

        sed -i '/Alex/s#COO#CEO#g' person.txt


    02. 批量修改文件扩展名称

  方法一:

    find /oldboy -maxdepth 1 -type f -name "oldboy*.txt"|sed -r 's#(.*)txt#mv \1txt \1jpg#g'|bash

    方法二:

    [root@oldboyedu62.com.cn /oldboy# ls oldboy*.txt|xargs -n1|sed -r 's#(.*)txt#mv & \1jpg#g'


    方法三:利用rename

    #rename "修改文件名称什么信息" "修改成什么"  修改什么文件

    rename ".txt" ".jpg" oldboy*.txt


03. 取出文件权限数值信息

    方法一:

    stat /etc/hosts|sed -nr '4s#^A.*s: \((.*)/-.*$#\1#gp'


    stat /etc/hosts|sed -n '4s#^A.*s: (\(.*\)/-.*$#\1#gp'

    0644

    方法二:权限

      ll /etc/hosts|sed -r 's#^-(.*)\. 1.*$#\1#g'


    ll /etc/hosts|sed -r 's#^-(.*)\. 1.*$#\1#g'|tr "rwx-" "4210"


七. 特殊替换文件内容信息:

      sed -n '3s/#103/103/gp' person.txt


      sed -n '3s#\#103#103#gp' person.txt


八. 修改整行信息:

    sed '3coldboy62' person.txt      c  change 修改替换指定的整行信息 

九 . 取消空行不要显示

方法一:

    sed '/^$/d' person.txt

方法二:

      sed -n '/^$/!p' person.txt


十 . 扩展:利用sed命令显示文件行号信息

    sed '=' person.txt|xargs -n2

04. 课程知识总结

    1)掌握sed命令语法结构  sed 参数 '条件 指令' 文件信息 

      参数:

  -n  取消默认输出

  -i  真实修改文件内容

  -e  识别多个指令信息,可以让多个指令同时执行

  -r  识别扩展正则符号信息

      指令:

      p  print  输出信息

  d  delete 删除文件信息

  i  insert 在指定条件行的上面添加信息

  a  append 在指定条件行的下面添加信息

  s  substitute  取代==替换

  g  global 将所有匹配的信息都做替换(没有 将一行中第一个匹配的信息做替换)

  c  change 修改替换指定的整行信息 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容