美文网首页
SHELL脚本之SED流式编辑器

SHELL脚本之SED流式编辑器

作者: RealLuo | 来源:发表于2019-03-11 21:56 被阅读0次

    1、什么是SED?

    答:SED全称是:Stream EDitor 流式编辑器,它的特点就是可以逐行处理文件,也可以非交互式修改文本文件;

    例如:

    寻找luo.txt这个文件中的带有root字符的行;

    sed  -n   '/root/p'   /luo.txt

    译为:运用sed流式编辑器查找luo.txt这个文本文件中带有root字符的行,并输出;

    它会把整个文件都找一遍,然后帮你输出到屏幕上;

    2、sed常用的使用方式由哪些?

    答:sed常用的使用方式由两种:

    a、sed       选项    ‘定址符和指令’    目标文件;(定址符指的是在文本文件中的第几行或第几个字符,需要加单引号)

    b、前置置命令  |  sed  选项   "定址符和指令" 

    3、sed常用的选项由哪些?

    答:sed常用的选项有:-n     -r    -i    p

    -n    指的是屏蔽默认输出,如果不加-n,sed自己本身会输出一边内容,加上你的指令,如此就是输出了两遍,所以要加-n;

    -i    指的是将修改后的结果保存到文件;

    比如:

    sed   -n  -i  '/root/p'    /luo.txt

    译为:运用sed流式编辑器修改并保存luo.txt这个文本文件中带root字符的行;

    最后的结果就是除带root字符的行外,其余内容全部删除;

    -r    指的是使用扩展正则;

    例如:sed  -rn  '/要查找的字符{字符的个数,}/p'  

    p    指的是输出查看相应内容;

    d    指的是删除;

    =    指的是运用sed显示文本文件答行号

    s    指的是替换,g指的是所有,格式需要用///或者###;

    格式如下:

    sed    's/ 旧内容 / 新内容 /'  目标文件

    为防止冲突:@@@、!!!、$$$、%%%、&&&、***、(((、)))都可以用; 

    4、实用案例;

    案例1:


    请运用sed流式编辑器和正则表达式来实现luo.txt这个文件的第一个字符与最后一个字符的替换;

    解:操作如下:

    sed   -r    's/^(.)(.*)(.)$/\3\2\1/'   luo.txt    

    译为:运用sed流式编辑器将luo.txt这个文本文件里的内容的第一个字符与最后一个字符进行替换;

    其中:

    s —— 在sed中表示替换的意思,是sed工具中常用的选项之一;没有加位置符表示所有,如是1s,表示第一行;

    ^(.) —— 这是正则表达式中的符号,^译为开头的第一个字符;()—— 在拓展正则式中译为保留的意思;

    . —— 在正则表达式中译为任意字符的意思;

    ^(.) —— 合在一起译为:保留文本文件中的第一个字符,不管这个字符是什么,都保留,哪怕是空格;

    (.*) —— *号表示的是前一个字符在文本中出现的任意次数;(.*)结合起来译为:保留任意字符出现的任意次数,就是不管它是什么字符,不管它出现了几次,都保留下来;

    (.)$ —— $在正则表达式中译为匹配行尾;(.)$结合为起来译为保留尾部的任意字符;

    \3\2\1 —— 在sed中译为由原来的1、2、3排序,重新编排为3、2、1;

    -r —— 指的是在sed流式编辑器中的一个选项,主要用于搭配扩展正则式使用;

    案例2:


    请运用sed和正则表达式将luo.txt文本文件中所有的数字全部删除;

    解:命令如下:

    sed     's / [ 0-9 ] / / '      luo.txt

    译为:[ 0-9 ]  这是一个集合,在正则表达式中译为0-9的数字;

                / / 在sed流式编辑器中译为空,斜杆中间没有写任何东西;

                s是sed流式编辑器中的一个常用选项之一,主要用于替换字符或者删除字符;

    案例3:


    请运用sed流式编辑器工具和正则表达式,将luo.txt文本文件中行首空格和数字全部删除,且把所有大写字母用[ ]括起来;

    解:命令格式如下:

    sed   -r  -i  's/ ^( )+ /  /g ;  s/ [ 0-9 ] /  /  ;  s/( [ A-Z ] )/ [ \1 ] /g '       luo.tx

    译为:

    [ 0-9 ] 和 [ A-Z ] 在正则表达式中译为0-9的数字集合和A-Z的大写字母的集合;

    /g  在sed流式编辑器中指的式所有的意思;

    -i 是sed流式编辑器中的选项之一,指的是保存修改后的文件;

    () 在扩展正则表达式中指的式保留的意思;

    以上........


    祝;开心!

    罗贵

    2019-03-11于深圳

    相关文章

      网友评论

          本文标题:SHELL脚本之SED流式编辑器

          本文链接:https://www.haomeiwen.com/subject/zhbbpqtx.html