计算机基础篇之_sed

Posted xiaofu89120

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机基础篇之_sed相关的知识,希望对你有一定的参考价值。

sed  【Stream EDitor  流编辑器】
 【行编辑器,逐行处理,把处理的结果保存在内存空间(模式空间),在内存中完成编辑,把结果输出。默认不编辑原文件,仅仅对模式空间中的数据做处理,然后处理结束后,将模式空间打印至屏幕】
语法:
    sed  [选项] AddressCommand file...
【选项】
      -n:静默模式(不显示模式空间中的内容)
      -i:直接修改原文件
      -e:脚本1 -e 脚本2 :可以同时执行多个脚本
       -f /path/to/sed_脚本
            sed -f /path/to/scripts file
       -r: 表示使用扩展正则表达式
【Address】
         1)起始行,结束行,$:表示最后一行
         2)/正则表达式/
         3) /模式1/,/模式2/
            :第一次被模式1匹配到的行开始----第一次被模式2匹配到的行结束,这中间的所有行
        4)指定的行
        5)开始行,+N       
           :从开始行向后的N行(N+1行)
【命令】
        d:删除符合条件的行
        p:显示符合条件的行
        a   字符串:在指定的行后追加新行
        i     字符串:在指定的行前面添加新行
        r file :在指定文件内容添加至符合条件的行处
        w file: 在指定范围内的内容另存至指定的文件中
        s /正则表达式/字符串/[修饰符] 
            :查找并替换,模式只替换每行中第一次被模式匹配到的字符串
[修饰符]
        -g:全局替换
        -i : 忽略字符大小写
示例

1,删除文件中1到3行
[root@python ~]# sed 1,3d /etc/a.txt
2,删除包含"dev"的行
[root@python ~]# sed /dev/d /etc/a.txt 
3,删除指定行"1"行+后2行(总计3行)
[root@python ~]# sed 1,+2d /etc/a.txt 
4,只删除第一行
[root@python~]# sed 1d /etc/a.txt
5,删除以#号开始的行
[root@python ~]# sed /^#/d /etc/a.txt
6,仅显示有字符串"dev"的行
[root@python ~]# sed -n /dev/p /etc/a.txt
7,在所有行后面加上字符串"xxx"
[root@python ~]# sed 1,$a xxx /etc/a.txt
[root@python ~]# sed /^//a ### /etc/a.txt 
8,在以/前面添加新行,内容为###
[root@python ~]# sed /^//i ### /etc/a.txt
9,在文件的最后追加b.txt文件
[root@python ~]# sed $r /etc/b.txt /etc/a.txt
10,在a.txt文件中查找以"/dev"字符串的行保存至b.txt文件中
[root@python ~]# sed /dev/w /tmp/c.txt /etc/a.txt 
11,在a.txt文件中行首的/替换成#
[root@python ~]# sed s/^//#/g /etc/a.txt
[root@python ~]# sed -i s/20/30/g /etc/hosts
12,&:引用模式匹配整个字符串
[root@python ~]# cat /tmp/a.txt 
love
like
[root@python ~]# sed s@l..e@&r@g /tmp/a.txt
[root@python ~]# sed s@(l..e)@1r@g /tmp/a.txt
lover
liker
[root@python ~]# sed s@l(..e)@L1r@g /tmp/a.txt
Lover
Liker
13,删除history命令行首的空白处
[root@python ~]# history | sed s/^[[:space:]]//g
14,删除文件中行首的空白符
[root@python sh]# sed -r s/^[[:space:]]+//g /etc/grub2.cfg
15.删除文件中的空白行
[root@python sed]# sed /^$/d sed.txt
16,删除以#号开头的行
[root@python sed]# sed s/#//g sed.txt 
17.删除行首为空白字符的行
[root@python sed]# sed -r s/^[[:space:]]+//g sed.txt
18.查找父目录
[root@python ~]# echo "/etc/rc.d" | sed -r s#^(/.*/)[^/]+/?#1#g
/etc/

 THE END

以上是关于计算机基础篇之_sed的主要内容,如果未能解决你的问题,请参考以下文章

开发面试基础篇之TCP协议

计算机基础篇之二

计算机基础学习笔记:操作系统篇之硬件结构,CPU Cache基础概念

虚拟化基础架构Windows 2008篇之4-将Windows计算机加入到域

计算机基础学习笔记:操作系统篇之硬件结构,存储层次结构

虚拟化基础架构Windows 2008篇之2-域用户与域用户组管理