day 27 sed

1、sed--打印
  • sed -n '/root/'p test.txt --#匹配含有root的行,没有“-n”选项则打印全部内容
  • sed -nr '/o+t/'p test.txt --#匹配的关键词含有特殊字符时,需要使用脱意字符,若加“-r”选项,则不需要使用脱意字符

  • sed -nr '/o{2}/'p test.txt --#匹配含两个“o”的行,加“-r”选项,不需要使用脱意字符
  • sed -nr '/root|bus/'p test.txt --#匹配含"root"或“bus”关键字的行,需要加“-r”选项
  • sed -n '/bus/'Ip test.txt --#加“I”选项(大写的i),匹配的关键词不区分大小写
  • sed -n '2'p test.txt --#打印指定的行,如打印第2行,此时不需要用“/ /”括起来
  • sed -n '2,5'p test.txt --#打印指定范围的行,比如打印第2~5行
  • sed -n '10,$'p test.txt --#打印指定范围的行,比如打印第10行到末行
  • sed -n '1,$'p test.txt --#打印全部的行
  • sed -e '1'p -e '/bus/'p -n test.txt --#"-e"表示在同一表达式里做多个匹配,先打印第1行,后打印匹配含“bus”的行。 若两个匹配项重合,则会依次打印出来,匹配两次: sed -e '1'p -e '/root/'p -n test.txt --#第1行含有“root”,则会打印第1行两次

2、sed--删除
  • sed '1,15'd test.txt --#删除指定文件的1~15行,并非删除原文件的内容(原文件内容并未改变),而是打印出删除指定范围的行之后剩下的行
  • sed -i '1,15'd test.txt --#删除指定文件的1~15行,加“-i”选项表示删除原文件的1~15行,打印出剩下的行
  • sed -i '/user2/'d test.txt --#删除原文件中包含“user2”的行,无打印
3、sed--替换
  • sed '1,10s/root/toor/g' test.txt --#将指定范围的行中的指定字符串替换,将第1~10行中的“root”全局替换为“toor”,之后打印全部内容,若不指定范围,则指全部行,使用“/”分隔,若要替换的内容本身含有“/”,则可以在其之前叫上脱意字符“\”:sed '1,10s/\/sbin\/nologin/123/g' test.txt, 或者换用其它分隔符如“#”、“@”等,例:sed '1,10s#/sbin/nologin#123#g' test.txt,表示将“/sbin/nologin”替换成“123”
  • sed -r '1,10s/ro+/r/g' test.txt --#可以使用正则表达式,如“+”、“.”、“*”等,使用“-r”选项,则特殊符号(比如+)不需要脱意
  • head test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' --#将test.txt文件的前10行的首字段和尾字段调换(字段以“:”分隔)打印出来(并未改变原文件的内容),加“-r”选项不需使用脱意,“[^:]+” 表示以非冒号(:)开头的首字段,“(.*):”表示中间的字段,匹配到最长的冒号处,“[^:]+”表示以非冒号(:)开头的尾字段,均使用“()”括起来,与后面3、2、1依次对应,“\3”表示第3个括号中的内容
  • head test.txt | sed 's/[a-zA-Z]//g'                                 --#将test.txt文件前10行中所有字符删掉,即将所有字符替换为空,打印出来,并不改变原文件内容
  • head test.txt | sed -r 's/(.*)/aaa:&/'                              --#将test.txt文件前10行前面加上字段“aaa:”,打印出来,并不改变原文件内容, “(.*)”表示整个字段,“&”表示前面对应括号中的内容

注: 以上例子均不改变原文件内容,只是打印输出后看到了相应处理后的效果, 若想同时改变原文件的内容,需加“-i”选项

                • 0
                  点赞
                • 0
                  收藏
                  觉得还不错? 一键收藏
                • 0
                  评论
                评论
                添加红包

                请填写红包祝福语或标题

                红包个数最小为10个

                红包金额最低5元

                当前余额3.43前往充值 >
                需支付:10.00
                成就一亿技术人!
                领取后你会自动成为博主和红包主的粉丝 规则
                hope_wisdom
                发出的红包
                实付
                使用余额支付
                点击重新获取
                扫码支付
                钱包余额 0

                抵扣说明:

                1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                余额充值