1.sed 概述

sed 是一个非交互式文本编辑器。它能够对文本文件和标准输入进行编辑,标准输入能够是来自键盘输入、文件重定向、字符串、变量。甚至来自于管道文本。

2.sed工作流程简述

sed在处理文件的时候。从一个文本行或标准输入读取数据。被保存到在一个叫模式空间的暂时缓冲区中。除非被删除或者输出被取消,否则全部被处理的行在运行完sed命令后都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。

3.sed的缓冲区

模式缓冲区:模式空间的缓冲区。被sed命令处理。

保持缓冲区:与模式缓冲区数交换或者暂存,默认值为空行

模式缓冲区与保持缓冲区的之间的命令有两类:替换和追加(替换命令为小写字母。追加命令为大写字母)

替换:模式缓冲区 -> 保持缓冲区  h (将模式缓冲区的内容拷贝到保持缓冲区,替换保持缓冲的内容)

保持缓冲区 -> 模式缓冲区  g

追加: 模式缓冲区 -> 保持缓冲区 H(将模式缓冲区的内容追加到保持缓冲区)

保持缓冲区 -> 模式缓冲区 G

4.sed调用方式和选项

  • sed [选项] 'sed 命令' 输入文件  (命令行调用sed)
  • sed [选项] 'sed 命令'  -f sed脚本文件 输入文件  (sed命令插入脚本文件后。然后通过sed命令调用它)
  • 无论哪种调用方式,假设没有指定输入文件,sed将从标准输入中接受输入。
选项 意义
-n 禁止自己主动打印模式缓冲区
-e 表示将下一个字符串解析为sed编辑命令
-f 表示正在调用sed脚本文件

5.sed命令

sed命令通常由两部分组成:定位文本行和sed编辑命令。

1)定位文本行:使用行号,指定一行或指定行号范围。使用正表达式。

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

sed元字符集:

^

锚定行的開始 如:/^sed/匹配全部以sed开头的行。

$

锚定行的结束 如:/sed$/匹配全部以sed结尾的行。

.

匹配一个非换行符的字符 如:/s.d/匹配s后接一个随意字符,然后是d。

*

匹配零或多个字符 如:/*sed/匹配全部模板是一个或多个空格后紧跟sed的行。

[]

匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。

[^]

匹配一个不在指定范围内的字符。如:/[^A-RT-Z]ed/匹配不包括A-R和T-Z的一个字母开头,紧跟ed的行。

\(..\)

保存匹配的字符。如s/\(love\)able/\1rs,loveable被替换成lovers。

&

保存搜索字符用来替换其它字符,如s/love/**&**/,love这成**love**。

\<

锚定单词的開始,如:/\<love/匹配包括以love开头的单词的行。

\>

锚定单词的结束,如/love\>/匹配包括以love结尾的单词的行。

x\{m\}

反复字符x。m次。如:/0\{5\}/匹配包括5个o的行。

x\{m,\}

反复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。

x\{m,n\}

反复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行

  2)sed编辑命令
sed编辑命令表
选项 意义
p 打印匹配行
= 打印文件行号
a\ 在定位行号之后追加文本信息
i\ 在定位行号之前插入文本信息
d 删除定位行
c\ 用新文本替换定位文本(行)
s 使用替换模式替换对应模式
r 从还有一个文件里读取文本
w 将文本写入到一个文件
y 变换字符(以单个字符替换相应的字符)
q 第一个模式匹配完毕后退出
{} 在定位行运行命令组与 -e选项功能相近
n 输出模式缓冲区行,读取下一行替换模式缓冲区行,运行下一条命令。并不是第一条命令
h 模式缓冲区的文本拷贝到保持缓冲区
H 模式缓冲区的文本追加到保持缓冲区
g 保持缓冲区的文本拷贝到模式缓冲区
G 保持缓冲区的文本追加到模式缓冲区
x 互换模式缓冲区和保持缓冲区的内容

sed 命令编辑文本的更多相关文章

  1. linux shell 用sed命令在文本的行尾或行首添加字符

    转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...

  2. Shell之sed命令

    sed用于一次性处理所有的编辑任务,尤为高效,为用户节省了大量的时间,sed适用于以下三种场合: 1.编辑相对交互文本编辑器而言太大的文件: 2.编辑命令太复杂,在交互式文本编辑器中难以输入的情况: ...

  3. 快速理解linux流编辑器sed命令

    原创 杜亦舒性能与架构 之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的 sed 是 stream editor 的简写 ...

  4. sed命令基本用法

    sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑sed 适用于以下三种场合:编辑相对交互式文本编辑器而言太大的文件编辑命令太复杂,在交互式文本编辑器中难以输入的情况对文本扫描一遍,但是 ...

  5. 无法绕开的cut, awk, sed命令

    linux命令的选项和选项后面的值的方式: 如果用 短选项, 选项值就放在短选项的后面, 如果用长选项, 值就用等于的方式. 最重要的是, 短选项后面的值, 跟短选项之间, 可以用空格, 也可以紧接着 ...

  6. 『忘了再学』Shell基础 — 30、sed命令的使用

    目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...

  7. sed命令给文本文件的每行的行首或者行尾添加文字

    在每行的头添加字符,比如"HEAD",命令如下: sed 's/^/HEAD&/g' test.file 在每行的行尾添加字符,比如“TAIL”,命令如下: sed 's/ ...

  8. Linux Shell编程 sed命令

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

  9. 文本处理三剑客之 Sed ——一般编辑命令

    sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...

随机推荐

  1. BZOJ 2938 [Poi2000]病毒(AC自动机)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2938 [题目大意] 给出一些病毒串,问是否存在不包含任何病毒串的无限长的字符串 [题解 ...

  2. 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)

    1.请看某个著名的it公司一则招聘信息的其中一条要求:“熟悉android系统架构及相关技术,1年以上实际android平台开发经验:”,里面非常明确的说道要求熟练android系统架构,这从某种程度 ...

  3. bzoj 2434 ac自动机

    ac自动机中,如果以trie中的节点为节点,(fail[i],i)为边,可以建立一颗树,该树有如下特点:“节点u是节点v的祖先 当且仅当 u代表的字符串是v代表的字符串的一个后缀”.(u代表的字符串是 ...

  4. noip2010初赛提高组 试题详解

    转载自:https://blog.csdn.net/eirlys_north/article/details/52889970 一.单项选择题 1.与16进制数 A1.2等值的10进制数是 ( ) A ...

  5. 2015 UESTC 搜索专题E题 吴队长征婚 爆搜

    吴队长征婚 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Descri ...

  6. Xcode常用插件推荐

    1.Xcode插件管理工具–Alcatraz的安装 Alcatraz是针对Xcode的一款插件管理器,通过Alcatraz可以非常方便的管理插件,包括安装.删除.升级等操作. 官方网站 安装方法一(推 ...

  7. Windows7 无法访问共享文件,域访问解决方法。

    1.开始——>运行——>gpedit.msc 打开[本地组策略编辑器] 2.计算机配置——>Windows设置——>安全设置——>本地策略——>安全选项——> ...

  8. Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据

    转载:http://www.cnblogs.com/zq281660880/archive/2012/09/26/2704836.html 今天在使用linq处理一下需求时碰到一点小问题,特此记录. ...

  9. 用css让一个容器水平垂直居中

    阅读目录 方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: cente ...

  10. 辛星跟您解析在CSS面包屑中三角形的定位问题

    刚才看到有位网友非常纳闷第二个棕色三角形是怎么定位的,我当感觉在以下说不清楚,就特别开了一片博客.来说清楚它.首先,前面的代码我们先抄下来,至于前面这部分代码是怎么来的,读我的用CSS制作面包屑导航的 ...