1.简介

sed全称是Stream Editor,是非交互式的编辑器。它不会修改原文件,除非使用shell重定向来保存结果, 或者可以指定-i选项来在线修改文件,这样就会改变原文件,升级脚本通常用-i选项。 默认情况下,所有的输出行都被打印到屏幕上 。sed 本身也是一个 管线命令 ,可以分析 standard input 。

sed编辑器 逐行处理文件(或输入) ,并将结果发送到屏幕。具体过程如下:

(1) 首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间), (2) 然后处理临时缓冲区中的行, (3) 完成后把该行发送到屏幕上。

sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

2. 定址

在使用sed的过程中,我们经常会听到“定址”,那么什么是“定址”呢?

定址用于决定对哪些行进行编辑 。地址的形式可以是 数字、正则表达式、或二者的结合 。如果没有指定地址,sed将处理输入文件的所有行。

比如:

1)地址是一个数字则表示行号;是“$"符号,则表示最后一行。

sed -n '3p' datafile   #只打印第三行

2)只显示指定行范围的文件内容

sed -n '100,200p' mysql_slow_query.log  # 只查看文件的第100行到第200行

3)地址是逗号分隔的,那么需要处理的地址是这两行之间的 范围 (包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。

•  sed '2,5d' datafile  #删除第二到第五行

•  sed '/My/,/You/d' datafile  #删除包含"My"的行到包含"You"的行之间的行

•  sed '/My/,10d' datafile  #删除包含"My"的行到第十行的内容

3. sed命令与选项

调用sed命令有两种形式:

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

对于第一种形式,具体调用一般是:

sed [选项][定址[命令]] file(s)

命令和选项如下:

3.1、sed命令

 

3.2、sed选项

补充:

在sed的命令行中引用shell 变量 时要使用 双引号 ,而不是通常所用的单引号。这根grep一样,双引号会获取变量的值,而单引号只会把变量当做普通字面字符。

更多可以参考:

《鸟哥的linux私房菜 基础篇》第12章

<linux-sed> sed基本用法的更多相关文章

  1. linux中sed的用法【转】

    sed命令行格式为:         sed [-nefri]  ‘command’  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...

  2. sed命令用法详解

    sed命令用法 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space) ...

  3. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  4. SED命令用法整理

    sed '/Started/'q  匹配到Started字符串则退出sed命令 sed '/Started/{/in/q}'  同时匹配到Started和in两个字符时则退出sed命令 ------- ...

  5. [转载]linux中sed的用法

    转自:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为:         sed [-nefri]  ‘ ...

  6. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  7. sed高级用法:模式空间(pattern space)和保持空间(hold space)

    摘自:https://blog.csdn.net/ITsenlin/article/details/21129405 sed高级用法:模式空间(pattern space)和保持空间(hold spa ...

  8. 正则表达式,sed简单用法

      一. 正则表达式 1. 常见的正则表达式字符 [] 匹配字符集 grep "bl[lo]g" oldboy.txt 表示字符‘l’或者‘o’都可匹配 * 重复前面字符任意次 g ...

  9. Linux sed命令用法

    概述 sed命令是一个面向字符流的非交互式编辑器,不允许用户与它进行交互操作.sed是以行为单位处理文本内容的.在shell中,可以批量修改文本内容. 用法 sed [选项] [动作] 选项与参数:- ...

  10. linux之sed的用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

随机推荐

  1. 说一下 HashMap 的实现原理?(未完成)

    说一下 HashMap 的实现原理?(未完成)

  2. 长期专业版 mac pycharm

    https://www.52pojie.cn/forum.php?mod=viewthread&tid=757722&tdsourcetag=s_pcqq_aiomsg

  3. 利用Post方法进行数据提交

    import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import ...

  4. sqlite3.OperationalError: no such table: account_user

    你可能是在项目中安装了多个app, 首先删除相关app的migration文件中的子文件 执行建表的时候使用: python manage.py makemigrations appname pyth ...

  5. crontab踩坑(二):Unit crond.service could not be found.

    这是因为Ubuntu上的服务名称是cron不是crond.所以你的命令应该是: sudo service cron start

  6. mySql数据重复数据去重

    1.问题来源:数据中由于并发问题,数据存在多次调用接口,插入了重复数据,需要根据多条件删除重复数据: 2.参考博客文章地址:https://www.cnblogs.com/jiangxiaobo/p/ ...

  7. linux 下使用github

    Linux下Git和GitHub环境的搭建 1.创建Github帐号  (name@server.com) 2.安装git [root@cloud ~]# yum install git -y 3.生 ...

  8. 分布式协调框架_Zookeeper

    Zookeeper 如今在分布式架构中应用十分广泛,它作为分布式协调框架在分布式架构中有着举足轻重的地位,本文是主要从以上几个方面对 Zookeeper 常用的知识进行总结. 一 从集中式到分布式架构 ...

  9. socket、tcp、udp、http 的认识

    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输 ...

  10. Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block

    Download dll: http://www.microsoft.com/en-us/download/confirmation.aspx?id=15104 http://www.cnblogs. ...