Linux:sed
【参考文章】:shell中sed命令的用法
【参考文章】:SED 简明教程
1. 简述
sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用。
执行命令时,一次处理一行内容,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
sed命令处理时只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用 -i 选项或者将结果重定向到新的文件中。
2. 用法
sed [选项] 动作 [文件路径]
-n:只输出修改的行,默认情况下将操作后的内容全部输出到控制台;
-i :直接修改读取的内容并写入源文件,并且不会输出到控制台;
-r :支持扩展的正则表达式(默认支持基础的正则表达式);
-f :执行指定脚本文件中的命令;
3. 子命令
3.1 s 替换
| 命令 | 完整示例 | 说明 |
|---|---|---|
| s/old/new/ | sed 's/old/new/' 1.txt | 删除1.txt中每行的第一个old都替换成new |
| s/old/new/2 | sed 's/old/new/' 1.txt | 删除1.txt中每行的第二个old都替换成new |
| s/old/new/g | sed 's/old/new/g' 1.txt | 删除1.txt中每行的每一个old都替换成new |
| s/old// | sed 's/old//' 1.txt | 删除1.txt中每行的第一个old都替换成空也就是把old删除 |
| s/old/&s/ | sed 's/old/&s/' 1.txt | 删除1.txt中每行的第一个old都替换成olds &代表前面查找的字符串 |
| 4,7s/^/#/ | sed '4,7s/^/#/' 1.txt | 删除1.txt中4-7行开头加上# 也就是批量添加注释 |
| 4,7s/^#an/an/ | sed '4,7s/^#an/an/' 1.txt | 删除1.txt中4-7行以#an开头的行去掉# |
3.2 i a c 插入
| 命令 | 完整示例 | 说明 |
|---|---|---|
| 行号 i | sed '2i123' 1.txt | 在1.txt的第二行前面插入123 |
| 正则 i | sed '/^[0-9]/i123' 1.txt | 在1.txt中所有数字开头的行前面插入123 |
| a | 在行后插入 | 命令格式和i相同 |
| c | 替换该行 | 命令格式和i相同 |
3.3 d 删除
| 命令 | 完整示例 | 说明 |
|---|---|---|
| 2d | sed '2d' 1.txt | 删除1.txt的第二行 |
| 2,5d | sed '2,5d' 1.txt | 删除1.txt的第二行到第五行 |
| 2,+5d | sed '2,+5d' 1.txt | 删除1.txt的第二行和第二行以后的5行 |
| $d | sed '$d' 1.txt | 删除1.txt的最后一行行 |
| /正则/ | sed '/^[0-9]/d' 1.txt | 删除以数字开始的行 |
| ! | sed '/^[0-9]/!d' 1.txt | 删除不是以数字开头的行 |
| ^$ | sed '^$' 1.txt | 删除1.txt的空行 |
3.4 p 输出
| 命令 | 完整示例 | 说明 |
|---|---|---|
| p | sed -n 'p' 1.txt | 输出1.txt的所有行 |
| 2p | sed -n '2p' 1.txt | 输出1.txt的第二行 |
| 2,5p | sed -n '2,5p' 1.txt | 输出1.txt的第二行到第五行 |
| 2,+5p | sed -n '2,+5p' 1.txt | 输出1.txt的第二行和第二行以后的5行 |
| 1~2p | sed -n '1~2p' 1.txt | 输出第一行,每隔两行输出一行,也就是输出奇数行 |
| 2~2p | sed -n '1~2p' 1.txt | 输出第二行,每隔两行输出一行,也就是输出偶数数行 |
| /正则/p | sed -n '/^[0-9]/p' 1.txt | 输出1.txt以数字开头的行 |
| $= | sed -n '$=' 1.txt | 输出1.txt的行数 |
Linux:sed的更多相关文章
- linux:sed高级命令之n、N(转)
sed的语法格式: sed [option] {sed-command} {input-file} sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-comm ...
- Linux常用命令:sed
本文记录的是自己在学习<Linux私房菜>中正则表达式的笔记. 关于行尾符$ 如果文件本身没有内容,比如使用touch新建的文件,那么$将会没有意义.例如下面操作: 先使用touch新建了 ...
- Unix/Linux命令:SED
在Unix/Linux系统中,sed命令采用逐行处理的方式对文件进行查找.删除.替换.添加.插入等操作. 语法:sed [OPTION]... {script-only-if-no-other-scr ...
- linux学习:sed与awk与tr用法整理
流编辑器:sed 语法:sed [-hnV][-e<script>][-f<script文件>][文本文件] 参数: -e<script>或--expression ...
- Linux(8):linux三剑客sed和awk & Shell 编程(1)
linux 三剑客 之 sed # sed 是什么? # sed : 字符流编辑器 Stream Editor: sed 擅长 替换.取行等 # sed 的功能与版本: 处理纯文本文件.日志.配置文件 ...
- Linux安全基础:sed命令的使用
sed 是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作. Sed本质上是一个编辑器,但是它是非交互式的,这点与VIM不同:同时 ...
- linux命令学习之:sed
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...
- Linux学习笔记:sed删除、插入数据
一.sed删除文件第一行 sed -i '1d' file.txt -- 删除第一行 sed -i 'nd' file.txt -- 删除第n行 sed -i '$d' file.txt -- 删除最 ...
- Linux命令:sed
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
随机推荐
- ASE19团队项目beta阶段Backend组 scrum7 记录
本次会议于12月13日,19:30在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Hao Wang, Lihao Ran, Xin Kang 请假人员:Zhikai Chen 每 ...
- 【2017-12-12】Winform----Datagirdview使用
1.数据绑定 DataGirdView.DataSource = list集合 2.复选框 获取复选框选中状态 for (int i = 0; i < dataGridView1.RowCoun ...
- idou老师教你学Istio 09: 如何用Istio实现K8S Ingress流量管理
前言 在Istio的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置Istio Ingress Gateway 什么是Ingress Gateway 由于Kubernetes Ingr ...
- Juit
Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性. 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. ...
- Flyme密码验证策略升级,忘记锁屏密码及「关机密码」功能
手机里有很多需要用到密码的地方,比如「手机密码」.「文档锁定区」.「应用加密」.「隐私模式」.忘记密码可是一件麻烦事,以前只能通过清除数据或格式化存储盘来解决.现在有了「关联魅族账号」功能,这些功 ...
- nagios安装部署及详细配置说明(转)
一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...
- nginx 缓存区太小导致后台Connection reset by peer 报错
问题概述:图片bit 64生成数据流太大,导致小程序分享弹窗的二维码图片生成失败 后台报错: 排查: Client------>nginx------->h5------>nginx ...
- PHP 获取上传文件的实际类型
方案一: mime_content_type ( string $filename ) : string (PHP 4 >= 4.3.0, PHP 5, PHP 7) mime_content_ ...
- DNS域名解析系统介绍
域名系统(D N S)是一种用于T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地址之间的转换及有关电子邮件的选路信息.这里提到的分布式是指在 I n t e r n e t上的 ...
- python_并发编程——进程池
1.进程池 from multiprocessing import Pool def func(n): for i in range(10): print(n+1) if __name__ == '_ ...