当前位置:网站首页>”sed“ shell脚本三剑客
”sed“ shell脚本三剑客
2022-08-01 21:13:00 【正大光明瑞士卷】
一、Sed概述
Sed是依赖于正则表达式的文本处理工具,可以读取文本内容,根据指定条件对其进行添,删,改,换等操作,被广泛应用于shell脚本以完成自动化处理任务;
Sed在处理数据时默认不直接修改源文件,而是把当前处理的行储存在临时缓存区中,所有的指令都在缓冲区中操作,处理完成后,把缓冲区的内容默认输出到屏幕,接着处理下一行内容,不断重复知道文件末尾,文件本身内容没有改变。
二、Sed基本语法
格式:sed [选项] [编辑指令] 文件1、2、......
常用选项:
-e 指定要执行的命令,只有一个编辑命令可省略 ;
-n 只输出处理后的行,读入时不显示 ;
-i 直接编辑文件,而不输出结果;
-f 使用指定的脚本来处理输入的文本文件;
-r E 使用拓展正则表达式
-s 将多个文件视为独立文件,而不是单个连续的长文件流
| 指令 | 作用 |
p | 输出指定的行 |
| d | 删除指定的行 |
| y | 字符替换,格式:”行范围 y/旧字符串/新字符串/g” |
| s | 字串替换,格式:”行范围 s/旧字符串/新字符串/g” |
| r | 读取指定文件 |
| w | 保存为文件 |
| i | 插入,在当前行前插入一行或多行 |
| a | 加入,在当前行下面增加一行指定内容 |
| d | 删除,删除指定的行的内容 |
| c | 替换,将选定行替换为指定内容 |
例:
输出指定的行
[[email protected] test]# sed -n '4p' /test/test.txt2 #输出第四行内容
111
[[email protected] test]# sed -n '1,4p' /test/test.txt2 #输出1到4行
aaa
bbb
ccc
111
[[email protected] test]# sed -n 'n;p' /test/test.txt2 #输出奇数行
[[email protected] test]# sed -n 'p;n' /test/test.txt2 #输出偶数行
[[email protected] test]# sed -n '1,${n;p}' /test/test.txt2 #将第一行到最末尾的所有偶数行输出
[[email protected] test]# sed -n '1,+4p' test.txt2 #输出第一行开始的连续4行
[[email protected] test]# sed -n '/999/p' test.txt2 #将包含“999”的行进行输出,注意格式!
999
[[email protected] test]# sed -n '/999\|111/p' test.txt2 #输出包含“999”以及“111”的行
[[email protected] test]# sed -n '1,/999/p' test.txt2 #将从第一行到包含”999“的行进行输出
插入符合条件的行
[[email protected] test]# sed -i '/999/i whoami' test.txt2 #在匹配”999“的行之前插入whoami
[[email protected] test]# sed -i '/999/a whoami' test.txt2 #在匹配“999”的行之后插入whoami
[[email protected] test]# sed '3alk' test.txt2 #在第三行之后插入"lk"
*:如果要插入多行数据,除了最后一行外,每行末尾都要加”/n“来进行换行表示数据未结束删除符合条件的行
[[email protected] test]# sed '1d' test.txt2 #删除第一行并输出
[[email protected] test]# sed '$d' test.txt2 #删除最后一行输出
[[email protected] test]# sed '^$d' test.txt2 #删除所有空行并输出
[[email protected] test]# sed '1,2d' test.txt2 #删除1到2行并输出
[[email protected] test]# sed '/999/d' test.txt2 #删除包含”999“的行并输出
[[email protected] test]# sed '/999/!d' test.txt2 #取反删除包含”999“的行并输出(不包含”999“的行)
[[email protected] test]# sed '/^999/d' test.txt2 #删除”999“开头的行并输出
[[email protected] test]# sed '/999$/d' test.txt2 #删除”999“结尾的行并输出
替换符合条件的文本
[[email protected] test]# sed 's/000//g' test.txt2 #将”000“删除
[[email protected] test]# sed '/kkk/c lll' test.txt2 #将”kkk“替换为”lll“
[[email protected] test]# sed 's/999/000/2p' test.txt2 #将所有包含”999“的第二个”999“替换为”lll“
迁移符合条件的文本
[[email protected] test]# sed '/777/w test2' test.txt #将包含“777”的行内容保存到test2
边栏推荐
- XSS漏洞
- 【中文树库标记---CTB】
- 方舟开服需要知道的那些事
- 15 分钟带你入门 Grafana
- Get started with Grafana in 15 minutes
- 漏洞分析丨HEVD-0x6.UninitializedStackVariable[win7x86]
- JS Improvement: Handwritten Publish Subscriber Model (Xiaobai)
- Suggestions and answer 8.1 C traps and defect chapter 8
- C Pitfalls and Defects Chapter 5 Library Functions 5.5 Library Function Signal
- 案例:MySQL主从复制与读写分离
猜你喜欢
随机推荐
图片识别商品接口 API:天猫淘宝
Realize the superposition display analysis of DWG drawing with CAD in Cesium
CS-NP白蛋白包覆壳聚糖纳米颗粒/人血清白蛋白-磷酸钙纳米颗粒无机复合材料
property语法
网红驼背矫正产品真的管用吗?如何预防驼背?医生说要这样做
15 分钟带你入门 Grafana
XSS漏洞
2022-08-01 第五小组 顾祥全 学习笔记 day25-枚举与泛型
Pytorch框架学习记录10——线性层
通过这两个 hook 回顾 Set/Map 基础知识
How to make the timer not execute when the page is minimized?
tiup mirror
Transformer学习
(七)《数电》——CMOS与TTL门电路
写给刚进互联网圈子的人,不管你是开发,测试,产品,运维都适用
封装一个管理 url 状态的 hook
Get started with Grafana in 15 minutes
30+的女性测试人面试经验分享
How to encapsulate the cookie/localStorage sessionStorage hook?
An online JVM FullGC made it impossible to sleep all night and completely crashed~









