【拔刀吧少年】之sed编辑器
sed
- 一、sed编辑器
- 二、sed编辑器工作流程
- 1、读取
- 2、执行
- 3、显示
- 三、命令格式
- 四、常用选项
- 五、常用操作
- 六、使用地址
- 七、删除行
- 八、替换
- 1、格式
- 2、4种替换标记
- 九、插入
一、sed编辑器
sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。
sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务。
sed依赖于正则表达式
二、sed编辑器工作流程
1、读取
sed从输入流 (文件、管道、标准输入) 中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)
2、执行
默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
3、显示
发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
注:
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。
三、命令格式
四、常用选项
sed [选项] ‘操作’ 参数
sed [选项] -f scriptfile 参数
选项 说明
-e或- -expression= 表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一 般在执行多个操作命令使用
f或- -file= 表示用指定的脚本文件来处理输入的文本文件
h或- -help 显示帮助
-n、- -quiet或silent 禁止sed编辑器输出,但可以与p命令一起使用完成输出
sed -e 'n{
操作1
操作2
…
}’ 文件1 文件2 …
-i 直接修改目标文本文件
打印行号和内容,行号在上,或者使用sed -n -e ‘=’ -e ‘p’ testsed1效果也一样
打印行号和内容,行号在上,或者使用sed -n -e ‘=’ -e ‘p’ testsed1效果也一样
五、常用操作
操作 说明
s 替换,替换指定字符
d 删除,删除选定的行
a 增加,在当前行下面增加一行指定内容
i 插入,在选定行,上面插入一行指定内容
c 替换,将选定行替换为指定内容
y 字符转换,转换前后的字符长度必须相同
p 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与“-n”选项一起使用
= 打印行号
l (小写L) 打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)
六、使用地址
sed编辑器有2种寻址方式:
以数字形式表示行区间
用文本模式来过滤出行
以数字形式表示行区间
打印文本的奇数和偶数行
打印/etc/passwd文件内指定的行
使用 -r 表示支持扩展正则表达式
七、删除行
删除以指定字符结尾的行及取反
删除一个区间的行
匹配到开头字符,无结尾的字符
八、替换
1、格式
2、4种替换标记
数字:表明新字符串将替换第几处匹配的地方
g:表明新字符将会替换所有匹配的地方
p:打印与替换命令匹配的行,与-n一起使用
w 文件:将替换的结果写到文件中
sed -i 's9\945\9\99\98\939g' test.txt #将94599替换为9893(红色为分隔符)
-f执行脚本文件
w
九、插入
将输出的字符进行互换位置
【拔刀吧少年】之sed编辑器相关推荐
- 【拔刀吧少年】之awk文本和数据处理编程语言
AWK 1. 什么是awk 2. 基本格式 3. 工作原理 4. 常见的内建变量(可直接用) 5. 按行输出文本 6. 按字段输出文本 7. 通过管道.双引号调用shell命令 8. 小案例 :awk ...
- 【拔刀吧少年】之正则表达式
序言 正则表达式 通常用于判断语句中,用于检查某一字符串是否满足某一格式 正则表达式是由普通字符与元字符组成 普通字符包括大小写字母.数字.标点符号及一些其他符号 元字符是指在正则表达式中具有特殊意义 ...
- 【拔刀吧少年】之Expect 自动化控制和测试 Here Document 免交互
免交互 一.Here Document免交互 1.1 概述 1.2 语法格式 1.3 简单案例 1.4 支持变量替换 1.5 多行注释 1.6 完成自动划分磁盘免交互 二.Expect进行免交互 2. ...
- 【拔刀吧少年】之sort uniq tr cut eval常用命令
sort uniq tr cut eval 一.排序命令--sort 1.格式 2.常用选项 二.去除重复行操作命令--uniq 1.格式 2.常用选项 3.示例 三.字符转换命令--tr 1.格式 ...
- 【拔刀吧少年】之shell数组
数组 一.数组 1.数组的定义方法 2.数组包括的数据类型 3.获取数组长度 4.获取数据列表 5.读取某索引赋值 6.数组遍历 7.数组切片 8.数组替换 9.数组删除 10.数组追加元素 二.数组 ...
- 【拔刀吧少年】之shell函数
函数 一.shell函数定义 二.格式 三.函数返回值 四.函数传参 五.函数变量的作用范围 六.递归 1.阶乘 2.递归查目录 七.创建函数库 总结 一.shell函数定义 将命令序列按格式写在一起 ...
- 【拔刀吧少年】之循环三兄弟for while until
循环三兄弟 一.echo命令 – 输出字符串或提取Shell变量的值 1.格式 2.常用参数 3.常用的转义字符 二.循环语句 1.for循环结构 2.while循环语句结构(迭代) 3.until ...
- 【拔刀吧少年】之条件语句
条件语句 一 .条件测试 1.test命令 2.文件测试 3.逻辑测试 4.整数值比较 5.字符串比较 二.if条件语句 1.单分支 2.双分支 3.多分支 4.例题 三.case语句结构 总结 一 ...
- 【拔刀吧少年】之shell编程规范与变量
shell编程规范与变量 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官"(`又称命令的组合`) 二.用 ...
最新文章
- Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
- ant 修改组件默认样式属性
- iBATIS:xml中定义返回值
- LightOJ1032 Fast Bit Calculations(数位DP)
- pandas中的括号索引
- 【Python】函数调用外部变量
- 【嵌入式】C语言高级编程-内联函数(10)
- django添加mysql数据库_Django添加mysql数据库关联时出现的错误
- 微信PaxosStore:深入浅出Paxos算法协议
- 麦步手表编程纪实(1)
- ACM-ICPC 2018 南京赛区网络预赛 B The writing on the wall(暴力)
- 基础算法 -- 贪心算法
- 敏捷测试与普通测试的区别
- 传统形态抗锯齿 2.0
- python函数自己调用自己_python怎么调用自己的函数
- freeipa 客户端 Kerberos认证 SSSD关系
- 苹果新卫星专利公布,苹果Find My功能知多少
- 论文阅读笔记《Adaptive Image-Based Visual Servoing Using Reinforcement Learning With Fuzzy State Coding》
- python VS matlab: reshape/max/matrix index等方法比较
- JPEG图片格式简单分析
热门文章
- ios首次加载web_ios加载webview显示进度条OC版
- 织梦Cms怎么一直服务器维护中,织梦cms文档关键词维护中频率详解
- centos7 yum下载路径
- 『 申请地址 』阿里云网盘限时开放内测申请!
- [别被脱库]—数据库的初恋~
- Python 制作微信全家福,你就是朋友圈最亮的仔!
- java取消_java – 取消之前的请求
- bat代码小游戏_程序员入职被27岁领导告诫:我被BAT录用过,是算法方面泰斗大哥...
- 17-爬虫之scrapy框架五大核心组件工作流程及下载中间件介绍04
- php js动态删除数组元素,javascript如何删除数组中的指定元素