网站首页 > java教程 正文
前言
sed编辑器被称作流编辑器( stream editor ),和普通的交互式文本编辑器恰好相反。在交互式文本编辑器中,比如vim ,你需要用键盘命令来交互式地插入、删除或替换数据中的文本。流编辑器则会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
sed处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"( pattern space),接着sed命令处理缓冲区中的内容,处理完成之后,把缓冲区的内容送往屏幕显示。接着处理下一行,这样不断重复,直到文件末尾。文件内容没有改变,除非使用了写入的命令,将内容更新。
1、sed命令格式
sed [选项] 动作 文件
动作的格式为:地址定界+编辑命令,即 [n1[,n2]]cmd 的形式
说明:
(1)n1和n2表示地址定界。sed通过设置地址用于决定对哪些行进行编辑,如果没有指定地址,sed将处理输入文件的所有行。sed地址的形式可以是数字、正则表达式或二者的结合,如下所示:
① 全文匹配:不需要给定地址。
②单地址匹配:写一个数字即可,例如:'8'表示匹配第8行。
③多地址匹配:给定一个范围,例如:'1,9'表示匹配第1行到第9行。
④模式匹配:例如:'/正则表达式/'表示正则表达式匹配到的行。再如,'1,/正则表达式/'则表示从第一行到正则表达式匹配到的行。
(2)cmd 为编辑命令。常见的编辑命令有常见的命令有---a:新增;c:取代;d:删除;i:插入;p:打印;s:取代。本文主要给大家讲一下“d删除”的用法。
2、删除的场景
(1)删除匹配到error的行
sed -i '/error/d' systeml.log
(2)删除第一行
sed -i '1d' system.log
(3)从第三行开始,每隔一行删除
sed -i '3~2d' system.log
(4)删除从第4行到第8行
sed -i '4,8d' system.log
(5)删除最后一行
sed -i '$d' system.log
(6)删除所有空行
sed '/^$/d' system.log
(7)从匹配行到末尾行
sed -i '/Hello World/,$d' system.log
(8)删除匹配行和之后两行
sed -i '/error/,+2d' system.log
备注:本文源自《趣谈shell》,用非线性思维学习shell,让天下没有难学的shell。
猜你喜欢
- 2024-10-22 「是时候升级Java11了」 JDK11优势和JDK选择
- 2024-10-22 一文读懂关于Java如何找出两个列表之间的新增和删除元素
- 2024-10-22 JAVA 面试高频提问知识点之:SET、LIST 和 MAP 的区别
- 2024-10-22 Java常规操作新增,更新,删除(java常规操作新增,更新,删除什么意思)
- 2024-10-22 JAVA全栈CMS系统Vue无限级分类拖拽增改查批量删除7
- 2024-10-22 「LeetCode」删除字符串中的所有相邻重复项Java题解
- 2024-10-22 # Redis 入门到精通(七)-- redis 删除策略
- 2024-10-22 【Java面试题】List如何一边遍历,一边删除?
- 2024-10-22 Redis03——Redis是如何删除你的数据的
- 2024-10-22 java 如何破坏双亲委派模型,卸载类?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)