欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sed常见用法

程序员文章站 2022-03-04 14:50:09
...

sed是流编辑器,默认不编辑源文件,是以行为单位从源文件抽取数据,进而处理再输出于屏幕上;可能有的人说那我直接vi不就好了嘛,但文本有几百成千上万的时候,你就不这么觉得了;这个时候就需要用到sed或者更为强大的awk了

流编辑器:是指向流水一样,抽取一行,处理一行,输出屏幕,抽取下一行,再处理显示,以此类推;而相对的vi等编辑器是将文件打开,内容都读取到缓存中,然后显示一个屏幕的内容给你,你再编辑;

sed用法

sed [option] 'AddressCommand' file ...

       即sed 以什么方式[option],对文件{file}的哪些内容{Address},做什么操作{command} ;

    -n: 静默模式

   -i :直接修改源文件(风险较大,不推荐)

    -e: Script -e Script:可以同时执行多个脚本

    -f : /PATH/TO/SED_SCRIPT    sed -f /path/script file

    -r: 使用扩展正则表达式(相对基本正则有更好的元字符支持)

Address:

    1, Startline,Endline    

           如: 1,100 即第1至100行;   $:最后一行

    2, /RegExp/ 正则表达式匹配 /^root/

    3, /pattern1/,/pattern2/

        第一次被patthern1匹配到内容开始,至第一次被pattern2匹配到的内容结束

    4, LineNumber 制定行

    5, StartLine, +N

           从StartLine开始,向后N行

Command

    d: 删除符合条件行,即delete

    p: 显示符合条件行,一般于-n合用,即print意思

    a  \string:在制定行后面追加新行   \n \t都可以用,即append含义

    i \string : 在制定行前面追加新行,内容为string, 即insert

    r file : 将制定文件内容,添加至符合体哦啊见的行处,即read

    w file: 将制定范围内的行,另存至制定文件中;即, write

    s/pattern/string/修饰符 : 查找并替换,默认只替换第一次被匹配到的字符串

            加修饰符:

                        g: 替换所有被匹配的字符串,即group

                        i: 忽略字符大小写

   l..e : like ->liker

              love -> lover

   &: 引用模式匹配整个串

练习: 

Question 1
#删除/etc/grub.conf文件中,行首空白符
sed s/^[[:space:]]*//g /etc/grub.conf
sed s/^ *//g grub.conf
Question2
#替换/etc/inittab文件中,"id:3:initdefault"一行中的数字为5
sed -n /id:5:initdefault:/p /etc/inittab
Question3
#删除/etc/inittab文件中的空白行
sed /^$/d /etc/inittab
Question4
#删除某文件开头部分的"#",但要求#后必须有空白字符才删除,否则不删除
sed s/^#// /etc/inittab
sed s/^# // inittab
sed s/^#[[:space:]]// inittab
sed s/^#[[:space:]]*// inittab
sed s/^[[:space:]]\+#// inittab

 

 

 

----------看马哥教学视频整理