sed 命令编辑文本
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 命令编辑文本的更多相关文章
- linux shell 用sed命令在文本的行尾或行首添加字符
转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...
- Shell之sed命令
sed用于一次性处理所有的编辑任务,尤为高效,为用户节省了大量的时间,sed适用于以下三种场合: 1.编辑相对交互文本编辑器而言太大的文件: 2.编辑命令太复杂,在交互式文本编辑器中难以输入的情况: ...
- 快速理解linux流编辑器sed命令
原创 杜亦舒性能与架构 之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的 sed 是 stream editor 的简写 ...
- sed命令基本用法
sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑sed 适用于以下三种场合:编辑相对交互式文本编辑器而言太大的文件编辑命令太复杂,在交互式文本编辑器中难以输入的情况对文本扫描一遍,但是 ...
- 无法绕开的cut, awk, sed命令
linux命令的选项和选项后面的值的方式: 如果用 短选项, 选项值就放在短选项的后面, 如果用长选项, 值就用等于的方式. 最重要的是, 短选项后面的值, 跟短选项之间, 可以用空格, 也可以紧接着 ...
- 『忘了再学』Shell基础 — 30、sed命令的使用
目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...
- sed命令给文本文件的每行的行首或者行尾添加文字
在每行的头添加字符,比如"HEAD",命令如下: sed 's/^/HEAD&/g' test.file 在每行的行尾添加字符,比如“TAIL”,命令如下: sed 's/ ...
- Linux Shell编程 sed命令
概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...
- 文本处理三剑客之 Sed ——一般编辑命令
sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...
随机推荐
- BZOJ 2938 [Poi2000]病毒(AC自动机)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2938 [题目大意] 给出一些病毒串,问是否存在不包含任何病毒串的无限长的字符串 [题解 ...
- 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
1.请看某个著名的it公司一则招聘信息的其中一条要求:“熟悉android系统架构及相关技术,1年以上实际android平台开发经验:”,里面非常明确的说道要求熟练android系统架构,这从某种程度 ...
- bzoj 2434 ac自动机
ac自动机中,如果以trie中的节点为节点,(fail[i],i)为边,可以建立一颗树,该树有如下特点:“节点u是节点v的祖先 当且仅当 u代表的字符串是v代表的字符串的一个后缀”.(u代表的字符串是 ...
- noip2010初赛提高组 试题详解
转载自:https://blog.csdn.net/eirlys_north/article/details/52889970 一.单项选择题 1.与16进制数 A1.2等值的10进制数是 ( ) A ...
- 2015 UESTC 搜索专题E题 吴队长征婚 爆搜
吴队长征婚 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Descri ...
- Xcode常用插件推荐
1.Xcode插件管理工具–Alcatraz的安装 Alcatraz是针对Xcode的一款插件管理器,通过Alcatraz可以非常方便的管理插件,包括安装.删除.升级等操作. 官方网站 安装方法一(推 ...
- Windows7 无法访问共享文件,域访问解决方法。
1.开始——>运行——>gpedit.msc 打开[本地组策略编辑器] 2.计算机配置——>Windows设置——>安全设置——>本地策略——>安全选项——> ...
- Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据
转载:http://www.cnblogs.com/zq281660880/archive/2012/09/26/2704836.html 今天在使用linq处理一下需求时碰到一点小问题,特此记录. ...
- 用css让一个容器水平垂直居中
阅读目录 方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: cente ...
- 辛星跟您解析在CSS面包屑中三角形的定位问题
刚才看到有位网友非常纳闷第二个棕色三角形是怎么定位的,我当感觉在以下说不清楚,就特别开了一片博客.来说清楚它.首先,前面的代码我们先抄下来,至于前面这部分代码是怎么来的,读我的用CSS制作面包屑导航的 ...