sed [OPTION]...  'script'  [input-file] ...
        script:
            地址定界编辑命令
             
        常用选项:
            -n:不输出模式空间中的内容至屏幕;
            -e script, --expression=script:多点编辑;
            -f  /PATH/TO/SED_SCRIPT_FILE
                每行一个编辑命令;
            -r, --regexp-extended:支持使用扩展正则表达式;
            -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
         
            ~]# sed  -e  's@^#[[:space:]]*@@'   -e  '/^UUID/d'  /etc/fstab
         
        地址定界:
            (1) 空地址:对全文进行处理;
            (2) 单地址:
                #:指定行;
                /pattern/:被此模式所匹配到的每一行;
            (3) 地址范围
                #,#:
                #,+#:
                #,/pat1/
                /pat1/,/pat2/
                $:最后一行;
            (4) 步进:~
                1~2:所有奇数行
                2~2:所有偶数行
                 
        编辑命令:
            d:删除;
            p:显示模式空间中的内容;
            a  \text:在行后面追加文本“text”,支持使用\n实现多行追加;
            i  \text:在行前面插入文本“text”,支持使用\n实现多行插入;
            c  \text:把匹配到的行替换为此处指定的文本“text”;
            w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
            r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
            =:为模式匹配到的行打印行号;
            !:条件取反;
                地址定界!编辑命令;
            s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
                替换标记:
                    g:全局替换;
                    w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
                    p:显示替换成功的行;
                 
                练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
                    ~]# sed  's@^[[:space:]]\+@@' /etc/grub2.cfg
                练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
                    ~]# sed  's@^#[[:space:]]*@@'  /etc/fstab
                练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;
                    ~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'
                    ~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'
                     
        高级编辑命令:
            h:把模式空间中的内容覆盖至保持空间中;
            H:把模式空间中的内容追加至保持空间中;
            g:把保持空间中的内容覆盖至模式空间中;
            G:把保持空间中的内容追加至模式空间中;
            x:把模式空间中的内容与保持空间中的内容互换;
            n:覆盖读取匹配到的行的下一行至模式空间中;
            N:追加读取匹配到的行的下一行至模式空间中;
            d:删除模式空间中的行;
            D:删除多行模式空间中的所有行;
             
            示例:
                sed  -n  'n;p'  FILE:显示偶数行;
                sed  '1!G;h;$!d'  FILE:逆序显示文件的内容;
                sed  ’$!d'  FILE:取出最后一行;
                sed  '$!N;$!D' FILE:取出文件后两行;
                sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;
                sed  'n;d'  FILE:显示奇数行;
                sed 'G' FILE:在原有的每行后方添加一个空白行;

【Linux】【Shell】【text】sed的更多相关文章

  1. 【Linux下自定义Shell终端提示符】

    目录 基本转义符 字体颜色 背景颜色 移动光标 @ Linux系统终端提示符的特征由系统环境变量 PS1(Prompt String One)定义. 我们可以通过命令echo $PS1来查看当前设置, ...

  2. 【Linux&Unix--open/close/write/read系统调用】

    个人学习整理.如有不足之处,请不吝不吝赐教. 转载请注明:@CSU-Max 系列博文:      Linux&Unix学习第一弹 -- 文件描写叙述符与权限  Linux&Unix学习 ...

  3. 【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群

    额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepal ...

  4. 【linux之设备,分区,文件系统】

    一.设备 IDE磁盘的设备文件采用/dev/hdx来命名,分区则采用/dev/hdxy来命名,其中x表示磁盘(a是第一块磁盘,b是第二块磁盘,以此类推), y代表分区的号码(由1开始,..3以此类推) ...

  5. 【linux之挂载,Raid,LVM】

    一.挂载,卸载 挂载:将新的文件系统关联至当前根文件系统卸载:将某文件系统与当前根文件系统的关联关系移除 cat /etc/mtab 存储着已经挂载的文件系统 (跟 mount 一样) mount:显 ...

  6. 【linux之进程管理,系统监控】

    一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ...

  7. 【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件

    在Python中,调用:subprocess.Popen(cmd, stdout = PIPE, stderr = PIPE, shell= true)的时候,如果调用的shell命令本身在执行之后会 ...

  8. 【Linux磁盘优化管理--RAID和LVM】

    在现阶段的企业环境中,为了数据的安全性及完整性必须要有一个合理的存储方案.面对着每秒可能产生超过几TB的数据,考虑到磁盘能不能实现 热冗余,及扩容,缩容.Linux给出了RAID(磁盘阵列)以及LVM ...

  9. 【Linux 内核网络协议栈源码剖析】网络栈主要结构介绍(socket、sock、sk_buff,etc)

    原文:http://blog.csdn.net/wenqian1991/article/details/46700177 通过前面的分析,可以发现,网络协议栈中的数据处理,都是基于各类结构体,所有有关 ...

  10. 【linux之链接,函数,随机数】

    一.链接 硬链接(hard link):同一个文件使用了多个别名.新建文件是已经存在的一个别名,,当原文件删除时,新建的文件仍然可以使用.硬链接和原来的文件没有什么区别,而且共享一个inode号.通过 ...

随机推荐

  1. 体验webhooks

    一.webhooks是什么 webhooks是一种实现在web api跟web service之间的发布订阅的轻量级的模式:当服务中心某个事件发生的时候,就会向订阅者发送一个POST请求形式的通知,这 ...

  2. Are we ready for learned cardinality estimation?

    Are we ready for learned Cardinality Estimation 摘要 文章包括三大部分: 对于一个静态的数据库,本文将五种基于学习的基数估计方法与九中传统的基数估计方法 ...

  3. HttpClient用法--这一篇全了解(内含例子)

    HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅使客户端发送Http请求变得容易,而且也方便开发人员测试接口(基于Http协议的),提高了开发的效率,也 ...

  4. .NET6运行时动态更新限流阈值

    昨天博客园撑不住流量又崩溃了,很巧正在编写这篇文章,于是产生一个假想:如果博客园用上我这个限流组件会怎么样呢? 用户会收到几个429错误,并且多刷新几次就看到了内容,不会出现完全不可用. 还可以降低查 ...

  5. 菜鸡的Java笔记 日期操作类

    日期操作类        Date 类与 long 数据类型的转换        SimpleDateFormat 类的使用        Calendar 类的使用                如 ...

  6. [atAGC045B]01 Unbalanced

    将0变为-1后求前缀和,那么$s$的价值即为最大的前缀和-最小的前缀和(特别的,空前缀的前缀和为0) 令$f(x)$表示当最大的前缀和不大于$x$时,最小的前缀和最大是多少,答案即为$\min_{x} ...

  7. 使用apt安装docker

    使用apt安装docker # 更新数据源 apt-get update # 安装所需依赖 apt-get -y install apt-transport-https ca-certificates ...

  8. Windwos安装Node.js和npm的详细步骤

    How to Install Node.js and NPM on Windows Node.js和npm 安装 Node.js 的时候会自动安装 npm ,并且 npm 就是 Node.js 的包管 ...

  9. 从头带你撸一个Springboot Starter

    我们知道 SpringBoot 提供了很多的 Starter 用于引用各种封装好的功能: 名称 功能 spring-boot-starter-web 支持 Web 开发,包括 Tomcat 和 spr ...

  10. javaSE基础复习

    第一天:复习java入门知识,jvm内存,java程序执行流程,数据类型,变量和自动类型转换,运算符... 学习java目的:起初是因为想找工作,拿高薪.后来逐渐在学习java技术的过程中渐渐循喜欢上 ...