原创 杜亦舒性能与架构

之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的

sed 是 stream editor 的简写,是一种非交互式的流编辑器,默认情况下,sed并不会改变原文件本身,而只是对文本流进行修改,并将修改后的结果打印到标准输出中

与awk命令一样,sed处理文本时也是以行为单位,每处理完一行就立即打印出来,然后再处理下一行,直至全文处理结束

sed可做的编辑动作包括删除、查找替换、添加、插入、从其他文件中读入数据等

常用场景

(1)shell脚本中不便使用vi命令对文件进行编辑,sed命令则很方便

(2)文件太大,用vi编辑器打开文件有性能问题,就可以使用sed命令编辑

(3)有规律的文本修改,例如全文替换,使用sed命令非常快速

命令格式

sed [options] 'command' file

options 是参数

command 是命令集合

file 是要编辑的文件路径

下面通过一些例子来了解sed的基本用法

(1)删除

d 命令用来删除

$ sed '1d' Sed.txt

将Sed.txt的第一行删除后输出到屏幕

由于sed默认不修改原文件,如果希望保存修改后的文件则需要用重定向

$ sed '1d' Sed.txt > Sed2.txt

如果想直接修改文件,使用-i参数

$ Sed -i '1d' Sed.txt

这里不会有任何输出,而是直接修改了源文件,删除了第一行

删除指定范围的行

$ sed '1,3d' Sed.txt

删除第一行到最后行

$ sed '1,$d' Sed.txt

删除最后一行

$ sed '$d' Sed.txt

删除除指定范围以外的行(只保留第5行)

$ sed '5!d' Sed.txt

删除所有包含abc的行

$ sed '/abc/d' Sed.txt

/abc/ 是指定搜索条件

(2)查找替换

s 命令用来查找替换

$ sed 's/abc/ABC/' Sed.txt

替换Sed.txt中每行的第一个abc为ABC

也可以指定替换的个数,如想替换两个

$ sed 's/abc/ABC/2' Sed.txt

利用g选项,可以完成所有匹配值的替换

$ sed 's/abc/ABC/g' Sed.txt

/.../ 内部可以接收正则表达式,例如替换abc开头的

$ sed 's/^abc/ABC/' Sed.txt

(3)插入文本

i 命令可以在匹配行之前插入

a 命令可以在匹配行之后插入

在第二行前插入文本

$ sed '2 i test' Sed.txt

在第二行后插入文本

$ sed '2 a test' Sed.txt

也可以在匹配行的上一行插入内容

例如在匹配到abc的行的上一行插入

$ sed '/abc/i\test' Sed.txt

(4)打印

使用 p 命令可进行打印,这里使用sed命令时加 -n 参数,表示不打印没关系的行

打印出文件中的第一行

$ sed -n '1p' Sed.txt

使用p命令,只打印实际处理过的行,简化输出

$ sed -n 's/abc/ABC/p' Sed.txt

这个命令先替换abc为ABC,然后只打印出替换过的行

快速理解linux流编辑器sed命令的更多相关文章

  1. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  2. Shell 基础 -- 流编辑器 sed 详解

    一.流编辑器 sed 与命令 sed Linux 中,常使用流编辑器 sed 进行文本替换工作.与常使用的交互式编辑器(如vim)不同,sed 编辑器以批处理的方式来编辑文件,这比交互式编辑器快得多, ...

  3. day14 linux三剑客之sed命令

    day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...

  4. Linux vi 编辑器常见命令的使用

    Linux vi 编辑器常见命令的使用 Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Win ...

  5. Linux中使用sed命令或awk命令修改常规配置文件

    一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...

  6. linux三剑客之sed命令

    一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...

  7. 流编辑器sed

    sed与grep一样,都起源于老式的ed编辑器,因其是一个流编辑器(stream editor)而得名.与vi等编辑器不同,sed是一种非交互式编辑器(即用户不必参与编辑过程),它使用预先设定好的编辑 ...

  8. Linux Shell编程 sed命令

    概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...

  9. shell脚本学习笔记 (流编辑器sed)

    sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用很普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出. sed不 ...

随机推荐

  1. [转]Servlet的load-on-startup

      在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是: 标记容器是否在启动的时候就加载这个servlet. 当值为0 ...

  2. IIS配置Asp.net时,出现“未能加载文件或程序集“System.Web.Extensions.Design, Version=1.0.61025.0”

    如果出现未能加载文件或程序集“System.Web.Extensions.Design, Version=1.0.61025.0, 主要是没有安装.net framwork 3.5,安装一下就行了. ...

  3. simple_strtoul()

    //此函数有以下几点值得注意: //1.第一个参数中的const.一般在函数的形参中,如果我们只是希望调用者使用该参数,而不会去改变该参数 //     内容(一般是指针指向的内容),则可以声明为co ...

  4. 在代码中加载storyBoard中的ViewController

    首先, 要在storyBoard中画出想要的VC, 然后建一个VC类和他关联.如图 : 调用时找如下写: DetailViewController *detailVC = [[UIStoryboard ...

  5. 将具有特殊class名img标签替换成[img][/img]标签--javascript正则表达式实践

    在项目中,可能有时候需要将一些特殊的东西加一个特别的属性,或者一个特殊的Class.如下: <!-- 第一种写法 --> <img src="abc.jpg" f ...

  6. git命令01

    1.了解git工具产生的背景知识.git 是什么? 目前它是一种分布式版本控制系统.那什么又是版本控制系统? 一种能自动帮助记录每次文件的改动,不仅仅是记录自己对文件的修 改变化,而且可以记录其他人对 ...

  7. iOS:iOS开发系列–打造自己的“美图秀秀”(中)

    来源: KenshinCui 链接:http://www.cnblogs.com/kenshincui/p/3959951.html 其他状态设置 常用的图形上下文状态设置上面基本都用到了,我们不再一 ...

  8. iOS:第三方框架MJPhotoBrowser图片浏览器的使用

    介绍:MJPhotoBrowser这个第三方库是MJ老师封装的一套用来浏览图片的浏览器,可是是本地图片.网络图片.gif图片等,其也依赖了SDWebImage.SVProgressHUD.YLGIFI ...

  9. mysql之事件的开启和调用

    1.检测事件是否开启 mysql> show variables like 'event_scheduler';+-----------------+-------+| Variable_nam ...

  10. scrapy-splash抓取动态数据例子三

    一.介绍 本例子用scrapy-splash抓取今日头条网站给定关键字抓取咨询信息. 给定关键字:打通:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站信 ...