sed是一个非交互式文本编辑器,他可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘,文件重定向,字符串,变量甚至来自于管道的文本。sed适用于以下三种场合:

  • 编辑相对交互式文本编辑器而言太大的文件。
  • 编辑命令太复杂,在交互式文本编辑器中难以输入的情况。
  • 对文件扫描一遍,但是需要执行多个编辑函数的情况

调用sed有三种方式,一种为she'll命令行方式,另外两种是将sed命令写入脚本,然后执行该脚本文件。三种方式归纳如下:

  • shell命令行输入命令调用sed,格式为:
  1. sed [选项] 'sed命令' 输入文件
  • 将sed命令插入脚本文件后,通过sed命令调用它,格式为:
  • sed [选项] -f sed脚本文件 输入文件
  • 将sed命令插入脚本后,最常用的方法是将该脚本设置为可执行文件,然后直接执行该脚本,格式为:
  1. ./sed脚本文件 输入文件

sed命令选项及意义:

选项 意义
-n 不打印所有行到标准输出
-e 表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e选项可以省略
-f 表示正在调用sed脚本文件

sed通常由定位文本行和sed编辑命令两部分组成,sed提供以下两种方式定位文本:

  1. 使用行号,指定一行或者行号范围
  2. 使用正则表达式

下表是sed定位文本的方法

选项 意义
x x为指定行号
x,y 指定从x到y的行号范围
/patten/ 查询包含模式的行
/pattern/pattern/ 查询包含两个模式的行
/pattern/,x 从与pattern匹配的行到x行号之间的行
x,/pattern/ 从x号行到与pattern匹配行之间的行
x,y! 查询不包括x,y行号的行

下面将在示例中说明sed的命令选项的意义,新建一个名为sedtest的文件,内容如下:(测试过程中可能会有修改)

this is a test file for sed
Test is real important
what i want to say is: haha
nobody is god except allah.
This is very IMPORTYANT
what you want to say is:goodbye!
where to go?
I don't know!
this cool!
  •  -n选项
#第一条命令,带-n选项,只打印第一行
[root@linuxTest ~]# sed -n '1p' sedtest
this is a test file for sed
#第二条命令,不带-n,不仅打印第一行,还打印输入文件的全部内容
[root@linuxTest ~]# sed '1p' sedtest
this is a test file for sed
this is a test file for sed
Test is real important
what i want to say is: haha
nobody is god except allah.
This is very IMPORTYANT

#打印行范围

root@linuxTest ~]# sed -n '2,6p' sedtest
  Test is real important
  what i want to say is: haha


nobody is god except allah.
  This is very IMPORTYANT

 
  • -e选项
#sed编辑命令“=”用来匹配is关键字的行号,如果希望行号和行内容都打印出来,则需要传递p和=两个编辑命令
[root@linuxTest ~]# sed -n -e '/is/=' -e '/is/p' sedtest this is a test file for sed Test is real important what i want to say is: haha

-s选项

#使用替换模式替换相应模式
#p选项,只替换每行第一个符合条件的文本
[root@linuxTest ~]# sed -n 's/is/IS/p' sedtest
thIS is a test file for sed
Test IS real important
what i want to say IS: haha
nobody IS god except allah.
ThIS is very IMPORTYANT
what you want to say IS:goodbye!
thIS cool!
#2p,如果每行含有两个及两个以上目标文本,则只替换每行第二个符合条件的文本
[root@linuxTest ~]# sed -n 's/is/IS/2p' sedtest
this IS a test file for sed
This IS very IMPORTYANT
#pg,如果该行中含有目标文本,则不论几个都替换。
[root@linuxTest ~]# sed -n 's/is/IS/pg' sedtest
thIS IS a test file for sed
Test IS real important
what i want to say IS: haha
nobody IS god except allah.
ThIS IS very IMPORTYANT
what you want to say IS:goodbye!
thIS cool!
#w,替换后,保存文本到另外一个文件
[root@linuxTest ~]# sed -n 's/is/IS/gw output' sedtest 

sed 笔记的更多相关文章

  1. sed笔记

    sed是stream editor缩写,表示流编辑器,它是一款文本处理工具,可以配合正则表达式进行文本替换. 1.使用正则表达式匹配并进行文本中的字符串替换 *使用-i选项可以直接将替换结果应用到源文 ...

  2. shell编程sed笔记

    源文件的内容 <modules> <module name="provider"> <!--发布模式--> <bds_mode/> ...

  3. 【Linux】sed笔记

     sed - stream editor for filtering and transforming text(用于过滤和转换文本的SED流编辑器),主要是以行为单位进行处理,可以将数据行进行替换. ...

  4. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  5. Sed&awk笔记之sed篇

    http://blog.csdn.net/a81895898/article/details/8482387 Sed是什么 <sed and awk>一书中(1.2 A Stream Ed ...

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

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

  7. Sed&awk笔记之sed篇(转)

    Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" strea ...

  8. sed、grep、awk -- 三剑客笔记记录

    sed常用操作笔记   1.删除文件最后一行: sed -i '$d' filename 2.递归替换内容:sed -i 's/内容A/内容B/g' filename sed -i "s/S ...

  9. Linux sed 使用笔记

    sed 工具使用笔记 Linux中经常需要对一些超大的文本文件进行操作,例如 GB 级别的 CSV.TXT.LOG 文件,如果使用 vi 或者 vim 编辑器操作会非常慢且卡,此时 sed 工具或许可 ...

随机推荐

  1. JavaScript 基础篇1

    JavaScript引用问题 1:<script>标签引用嵌入html页面中,在外部引用中是JavaScript文件时必须用src属性设置相应的文件的URL.2:在不使用defer和asy ...

  2. linux samba smb 在客户端无法连接使用

    netstat -nutlp查看是否启动进程 1.网络是否正常,是否可以ping通.2.Windows和Linux的防火墙全部关闭.3.samba的端口是否开启,tcp/139.tcp/445.udp ...

  3. Unity Shader 矩阵基本信息

    基本信息 mul函数 mul函数,是表示矩阵M和向量V进行点乘,得到一个向量Z,这个向量Z就是对向量V进行矩阵变换后得到的值.  HLSL的mul函数接受mul(V, M)或mul(M, V),要注意 ...

  4. Ubuntu16.04交叉工具链安装

    前言: 开发环境是64位的ubuntu16.04,交叉工具链是通过sudo apt-get install ....安装的,移植uboot2014.10,但是很奇怪,按照网上的介绍在start.s里面 ...

  5. USG防火墙DHCP设置保留IP地址

    在使用disp cur查看当前配置 然后使用undo修改 这样10.0.1.1网段到10.0.1.100之间的IP地址不会分出去

  6. Linux中redis安装配置及使用详解

    Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...

  7. 淘宝客知道这几个ID,收入将会提高50%

    基础问题天天说,天天有人问.这篇文章写点基础的.特别对新手的帮助会很大哦. 1,PID,做淘宝客不知道PID,赚到钱也会被冻结. 如何手动获取PID 2,单品ID,淘宝商品的唯一识别编号,和身份证一样 ...

  8. FPGA中iic总线上,应答ACK解析

    首先要明白一点,有效ACK是指第9位为低电平,第十位,十一位就管不着了,(我写的代码发现第九位为低电平,之后复位为高电平,开始没注意后来搞的很是头痛) 主机发ack和主机检测ack,主机发ack是在从 ...

  9. mysql优化-数据库优化、SQL优化

    我有一张表w1000,里面有1000万条数据,这张表结构如下:CREATE TABLE `w1000` ( `id` varchar(36) NOT NULL, `name` varchar(10) ...

  10. 2、初探 ZooKeeper 技术内幕

    分布式一致性 “分布式” 是大型系统实现高性能.高可用所常用的架构手段,本章节将概述 “分布式一致性”的基本内容,以作为 ZAB 算法阐述的基础. 分布式一致性的基本概念 数据库系统的基础理论中,“事 ...