Linux三剑客之sed流编辑器
一、功能说明
Sed是Stream Editor(流编辑器)缩写,是操作、过滤和转换文本内容的强大工具。常用功能有增删改查,过滤,取行。
二、语法格式
Usage: sed [options] [sed-commands] [input-file]
选项 sed命令 出入文件
三、常用参数和选项
| -n | 取消默认的sed输出,常与sed内置命令的p连用 |
| -i | 直接修改文件内容,而不是输出到终端 |
| -r | 使用扩展正则表达式 |
| -e | 执行多条sed命令 |
| -f | 后接sed脚本文件名 |
| a | 在指定行后添加一行或多行文本 |
| d | 删除一行或多行文本 |
| i | 在指定行前添加一行或多行文本 |
| p | 打印匹配行的内容 |
| c | 用新行取代旧行 |
| s | 替换指定字符 |
| l | 输出不可见字符 |
| g | 获得内存缓冲区的内容,并替代当前模板块中的文本 |
| & | 匹配到的文本 |
| e | 将输出内容当做bash命令执行 |
| n | 清空当前模式空间,然后读取下一行 |
| N | 追加下一个输入行到模板块后面并在二者间嵌入一个新行 |
| = | 列出行数 |
四、使用范例
1、实验文本
[root@WT data]# cat test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2、增删改查
2.1、增
a 在指定文本行后添加一行或多行文本
i 在指定文本行前添加一行或多行文本
2.1.1、增加单行文本
[root@WT data]# sed '2a 106,huahua,yuangong' test.txt
,xiaoming,CEO
,zhangsan,CTO
,huahua,yuangong
,wangwu,COO
,gg,CFO
,xiaobai,CIO
[root@WT data]# sed '2i 106,huahua,yuangong' test.txt
,xiaoming,CEO
,huahua,yuangong
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.1.2、增加多行文本
[root@WT data]# sed '2a 106,huahua,yuangong\n107,fengxue,zhuguan' test.txt
,xiaoming,CEO
,zhangsan,CTO
,huahua,yuangong
,fengxue,zhuguan
,wangwu,COO
,gg,CFO
,xiaobai,CIO
[root@WT data]# sed '2i 106,huahua,yuangong\n107,fengxue,zhuguan' test.txt
,xiaoming,CEO
,huahua,yuangong
,fengxue,zhuguan
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.2、删
d 删除一行或多行文本
2.2.1、删除文件全部文本内容
[root@WT data]# sed 'd' test.txt
[root@WT data]#
2.2.2、删除指定一行的文本
[root@WT data]# sed '2d' test.txt
,xiaoming,CEO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.2.3、删除指定的多行文本
[root@WT data]# sed '2,3d' test.txt
,xiaoming,CEO
,gg,CFO
,xiaobai,CIO
2.2.4、删除某行及之后的所有文本
[root@WT data]# sed '3,$d' test.txt
,xiaoming,CEO
,zhangsan,CTO
2.2.5、从某行开始删除间隔为N的行
[root@WT data]# sed '1~2d' test.txt
,zhangsan,CTO
,gg,CFO
2.2.6、从删除某行以及删除此行后面的N行
[root@WT data]# sed '1,+2d' test.txt
,gg,CFO
,xiaobai,CIO
2.2.7、删除有指定字符串的行
[root@WT data]# sed '/xiaoming/d' test.txt
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.2.8、删除指定“字符1”到指定“字符串2”的行
[root@WT data]# sed '/xiaoming/,/wangwu/d' test.txt
,gg,CFO
,xiaobai,CIO
2.2.9、删除指定字符串的行到第N行
[root@WT data]# sed '/xiaoming/,3d' test.txt
,gg,CFO
,xiaobai,CIO
2.3、改
2.3.1、修改指定的行
c 用新行取代旧行
[root@WT data]# sed '1c 100,xiaoming02,CEO' test.txt
,xiaoming02,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.3.2、文本替换
s 替换指定字符
g 获得内存缓冲区的内容,并替代当前模板块中的文本
-i 直接修改文件内容,而不是输出到终端
sed文本替换说明
sed -i 's/▇/▲/g' xxx.txt
sed -i 's#▇#▲#g' xxx.txt
1、两边是引号,引号里面的两边分别为s和g,中间是三个一样的字符/或#作为定界符。#能在替换内容包含/有助于区别。定界符可以是任意符号如:或|等,但当替换内容包含定界符时,需转义即: |。这里建议使用#作为定界符。
2、定界符/或#,第一个和第二个之间的就是被替换的内容,第二个和第三个之间的就是替换后的内容。
3、s#▇#▲#g,▇能用正则表达式,但▲不能用,必须是具体的。
4、默认sed软件是对模式空间(内存中的数据)操作,而-i选项会更改磁盘上的文件内容。
[root@WT data]# sed 's#xiaoming#xiaoming02#g' test.txt
,xiaoming02,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.3.3、指定行进行文本替换
[root@WT data]# sed '1s#101#100#g' test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.3.4、分组替换\(\)和\1的使用说明
sed流编辑器的\(\)最多可以使用9个,\(\)里面可以使用正则表达式,\1表示第一个\(\)匹配到的内容,\2以此类推。
[root@WT data]# echo "101,xiaoming,CEO"|sed -nr 's#^.*,(.*),CEO$#\1#gp'
xiaoming
2.3.5、&符号的使用说明
&表示用sed匹配到的文本
范例说明,把test.txt文件名改为test.dat
[root@WT data]# ls|sed -nr 's#(.*).txt#&#gp'
test.txt
[root@WT data]# ls|sed -nr 's#(.*).txt#\1,&#gp'
test,test.txt
[root@WT data]# ls|sed -nr 's#(.*).txt#mv & \1.dat#gp'
mv test.txt test.dat
[root@WT data]# ls|sed -nr 's#(.*).txt#mv & \1.dat#gp'|bash
[root@WT data]# ls
test.dat
2.4、查
p 输入匹配行的内容,默认sed会输出一次,加上p之后就会输出两次,所有n取消sed的默认输出。
2.4.1、按行查询
[root@WT data]# sed '5p' test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
,xiaobai,CIO
[root@WT data]# sed -n '5p' test.txt
,xiaobai,CIO
2.4.2、输出指定范围的行
[root@WT data]# sed -n '1,2p' test.txt
,xiaoming,CEO
,zhangsan,CTO
2.4.3、从某行开始依次输出间隔为N的行
[root@WT data]# sed -n '1~2p' test.txt
,xiaoming,CEO
,wangwu,COO
,xiaobai,CIO
2.4.4、输出全部的行
[root@WT data]# sed -n 'p' test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
2.4.5、输出指定字符串的行
[root@WT data]# sed -n '/gg/p' test.txt
,gg,CFO
2.4.6、其他查询方法
[root@WT data]# sed -n '1,/COO/p' test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
3、内容另存为
w 把sed模式空间的内容另存为一个新文件中
[root@WT data]# cat num.txt [root@WT data]# sed 's#1#0#g;w output.txt' num.txt [root@WT data]# cat output.txt
4、执行命令
e 把模式空间的内容当作bash执行
[root@WT data]# ls|sed -nr 's#(.*).txt#mv & \1.dat#gpe'
mv test.txt test.dat
[root@WT data]# ls
test.dat
5、一条sed语句执行多个命令
-e或";"分号 执行多条sed语句的命令
[root@WT data]# sed -e 's#101#100#g' -e 's#105#500#g' test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
[root@WT data]# sed 's#101#100#g;s#105#500#g' test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
6、n的使用说明
[root@WT data]# cat test.txt
,xiaoming,CEO
,zhangsan,CTO
,wangwu,COO
,gg,CFO
,xiaobai,CIO
[root@WT data]# sed -n 'n;p' test.txt
,zhangsan,CTO
,gg,CFO
7、"="的使用说明
[root@WT data]# sed '=' test.txt ,xiaoming,CEO ,zhangsan,CTO ,wangwu,COO ,gg,CFO ,xiaobai,CIO
Linux三剑客之sed流编辑器的更多相关文章
- Linux下的sed流编辑器命令详解
sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内 ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- (转)不看绝对后悔的Linux三剑客之sed实战精讲
不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...
- day14 linux三剑客之sed命令
day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...
- 【linux三剑客】sed命令
sed - stream editor for filtering and transforming text sed 流编辑器 strem edition,实现对文件的增删改替换查是Linux中第二 ...
- Linux 三剑客之sed
目录 Linux 三剑客之sed 命令补充: sort命令 uniq命令 cut命令 tr命令 wc命令 三剑客 - sed 编辑模式: 定位分类: 实例如下: d模式--删除模式 p模式--打印 a ...
- Linux sed 流编辑器
sed是stream editor的简称,也就是流编辑器.盗用一张图片解释原理 命令格式: SYNPPSIS: sed [OPTION]… {script-only-if-no-other-scrip ...
- Linux 三剑客 -- awk sed grep
本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
随机推荐
- ZeroC ICE的远程调用框架 AMI与AMD -Why?
在Ice有两种异步使用的方式,AMI和AMD.AMI是异步方法调用,AMD是异步方法调度(分派).前者用在代理端,后者用在饲服实现端. AMI其实就是在代理端,使用Future机制进行异步调用,而不阻 ...
- 程序员修神之路--kubernetes是微服务发展的必然产物
菜菜哥,我昨天又请假出去面试了 战况如何呀? 多数面试题回答的还行,但是最后让我介绍微服务和kubernetes的时候,挂了 话说微服务和kubernetes内容确实挺多的 那你给我大体介绍一下呗 可 ...
- 结合RBAC模型讲解权限管理系统需求及表结构创建
在本号之前的文章中,已经为大家介绍了很多关于Spring Security的使用方法,也介绍了RBAC的基于角色权限控制模型.但是很多朋友虽然已经理解了RBAC控制模型,但是仍有很多的问题阻碍他们进一 ...
- 线程中synchronized关键字和lock接口的异同
一.synchronized关键字 1.可以用来修饰代码块 synchronized (this) { // 同步的关键字 this 表示当前线程对象 if (num == 0) { break; } ...
- DDD实战与进阶 - 值对象
目录 DDD实战与进阶 - 值对象 概述 何为值对象 怎么运用值对象 来看一个例子 值对象的持久化 总结 DDD实战与进阶 - 值对象 概述 作为领域驱动设计战术模式中最为核心的一个部分-值对象.一直 ...
- 使用Xdroid进行端口映射,出现adb server version (36) doesn't match this client (39); killing...的解决方案
第一反应就是adb冲突了,因为Xdroid这个产品看起来就不像是给开发人员用的模拟器,因为不能选择各种版本进行适配,所以肯定自带了一个adb. whereis命令发现果然有两个adb,一个直接是安装在 ...
- python+selenium +unittest生成HTML测试报告
python+selenium+HTMLTestRunner+unittest生成HTML测试报告 首先要准备HTMLTestRunner文件,官网的HTMLTestRunner是python2语法写 ...
- 用CodePush在React Native App中做热更新
最近在学React Native,学到了CodePush热更新. 老师讲了两种实现的方法,现将其记录一下. 相比较原生开发,使用React Native开发App不仅能节约开发成本,还能做原生开发不能 ...
- 《浅入浅出》-RocketMQ
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点脑图.个人联系方式和技术交流群,欢迎Star和指 ...
- 【浅析】|白话布隆过滤器BloomFilter
通过本文将了解到以下内容: 查找问题的一般思路 布隆过滤器的基本原理 布隆过滤器的典型应用 布隆过滤器的工程实现 场景说明: 本文阐述的场景均为普通单机服务器.并非分布式大数据平台,因为在大数据平台下 ...