shell中sed命令如何使用-创新互联

这篇文章给大家分享的是有关shell中sed命令如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

成都创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!成都创新互联具备承接各种类型的网站设计制作、成都网站建设项目的能力。经过十年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。

sed工具:sed是文本流编辑器,逐行对文件的内容进行处理

用法:sed [option] ... 'script' inputfile...

选项:

 -n:静默模式,不输出模式空间的内容至屏幕


 -e:实现多点的功能编辑


 -f /path/from/script_file:从指定的文件读取编辑脚本


 -r:支持使用扩展的正则表达式

地址界面方法:

 (1)不给地址:对全文进行处理


 (2)一个地址(单地址)

   #:指定的行

   /pattern/:被引用处模式所能够匹配到的每一行:


 (3)地址范围

   #,#:从第几行到第几行

   #,+#:显示从第几行开始向后的N行

   /pat1/,/pat2/:同时匹配2个参数,表示匹配这2个参数之间的所有行

   #,/pat1/:表示匹配这2个参数之间的所有行

 (4)~:步进

     #sed -n ‘1~2p’ test.txt(第一行开始,每次增加2行,意思就是显示奇数行)

  shell中sed命令如何使用


  #sed -n ‘2~2p’ test.txt(从第二行开始显示,每次增加2行,意思就是显示偶数行)

  shell中sed命令如何使用

编辑命令:

 d:删除被地址界定选定的内容

 p:显示(打印)模式空间中的内容到屏幕上,只打印符合条件的行,常于-n结合一起使用

 a \text:在行后面一行追加文本:支持使用\n实现多行追加;

   例: #sed '/^T/a \abc' a.txt

 i \text:在行前面一行追加文本:支持使用\n实现多行追加;

   例:# sed '/^T/i \abc' a.txt

 c \text:替换匹配到的行:

   例:# sed '/^T/c \abc' a.txt

 w /path/to/somefile:保存模式空间中匹配到的内容至指定文件中;

 r /path/from/somefile:读取指定文件的文本游戏 至模式空间中匹配到的行后;

 =:为模式空间中的行,打印行号;

   例:#sed -n '/^T/=' a.txt

 q:一旦匹配到内容,则退出;不再往下匹配

 !:取反条件;对除了模式匹配到的行以外的行,进行操作;

 s///:支持使用其它分隔符,s@@@,s###

替换标记:

 g:行内全局进行替换:例:sed -n ‘s@r..t@&er@p’ /etc/passwd  不带g选项,只替换每一行的第一次

 #:行内替换,替换第几次出现的匹配的内容,例:sed -n 's/Unix/UNIX/2p' a.txt,把第2次出现的Unix替换

 p:如果替换成功,则显示替换成功的行,与-n一起使用

 w /path/to/somefile:将替换成功的行保存至指定文件中

练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符


 #sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf


练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

 #sed 's@^#[[:space:]]\+@@' /etc/fstab

练习3:echo一个绝对路径给sed命令,取出其基名:

 #echo "/etc/sysconfig" | sed 's@[^/]\+$@@'

练习4:批量修改文件名字

 #ls *.jpg | sed 's#\(.*\)_finished\(.*\).*#mv & \1\2#g' | bash

高级编辑命令:

 h:把模式空间中的内容覆盖至保持空间中;

 H:把模式空间的内容追加至保持空间中;

 g:从保持空间取出数据覆盖至模式空间;

 G:从保持空间取出数据追加至模式空间;

 x:把模式空间中内容与保持空间中的内容进行互换操作;

 n:读取匹配到的行的下一行覆盖至模式空间;

 N:读取匹配到的行的下一行追加至模式空间;

 d:删除模式空间中的所有行;

 D:删除多行模式空间中的第一行;

 示例用法:


 #sed -n ‘n;p’ test.txt(输出偶数行)


 #sed ‘n;d’ test.txt(只显示奇数行)

      #sed ‘$!d’ test.txt(最出文件最后一行)

 #sed ‘G’ test.txt(在每一行下面加一个空白行)

 #sed ‘/^$/d;G’ test.txt(每行间只保留一个空白行)

 #sed '1!G;h;$!d' test.txt(逆行显示文件内容)

 #sed ‘$!N;$!D’ test.txt(读文件的后2行)

 #sed -n ‘1!G;h;$p’ test.txt(逆行显示文件内容)

保持空间使用的一个例子:

 需求:把单词the和statement之间的单词的全部改为大写


 原文:

  find the Match statement


  consult the Get statement


  using the Read statement to retrieve data


 sed写法:

       /the .*statement/{

        h

        s/.*the \(.*\)statement.*/\1/

        y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

        G

        s/\(.*\)\n\(.*the \).*\( statement.*\)/\2\1\3/

        }

 结果:

   find the MATCH  statement

 Consult the GET  statement

 using the READ  statement to retrieve data

 解析:


  /the .*statement/:匹配这种模式的行,然后进行修改

  h:将匹配到的内容覆盖至保持空间,保留一份复本

  s/.*the \(.*\)statement.*/\1/:在模式空间中将匹配到行转换为要改变的单词

  y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/:将修改后的单词转换为大写

  G:把保持空间的复本追加到模式空间

  s/\(.*\)\n\(.*the \).*\( statement.*\)/\2\1\3/:将修改为大写的单词替换到原语句中的单词

感谢各位的阅读!关于“shell中sed命令如何使用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:shell中sed命令如何使用-创新互联
本文URL:http://hbruida.cn/article/djhici.html