当前位置:网站首页>”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
边栏推荐
猜你喜欢
ISC2022 HackingClub白帽峰会倒计时1天!最全议程正式公布!元宇宙集结,精彩绝伦!
虚拟内存与物理内存之间的关系
Realize the superposition display analysis of DWG drawing with CAD in Cesium
How to choose Visibility, Display, and Opacity when interacting or animating
写给刚进互联网圈子的人,不管你是开发,测试,产品,运维都适用
Graph adjacency matrix storage
C专家编程 第1章 C:穿越时空的迷雾 1.4 K&R C
Internet使用的网络协议是什么
Jmeter实战 | 同用户重复并发多次抢红包
Pytorch学习记录(八):生成对抗网络GAN
随机推荐
How to make the timer not execute when the page is minimized?
LeetCode·每日一题·1374.生成每种字符都是奇数个的字符串·模拟
织梦发布文章提示body has not allow words错误
网红驼背矫正产品真的管用吗?如何预防驼背?医生说要这样做
C陷阱与缺陷 第7章 可移植性缺陷 7.11 可移植性问题的一个例子
R语言 pca主成分分析的主要方法
对C语言结构体内存对齐的理解
软考 ----- UML设计与分析(上)
使用员工管理软件,解锁人力生产力新水平,提高人力资源团队灵活性
win10版本1803无法升级1903系统如何解决
tiup mirror clone
网络安全与基础设施安全局(CISA):两国将在网络安全方面扩大合作
R语言进行相关的操作
测试开发人均年薪30w+?软件测试工程师如何进阶拿到高薪?
附录A printf、varargs与stdarg A.2 使用varargs.h来实现可变参数列表
Pytorch框架学习记录13——利用GPU训练
深拷贝浅拷贝
C专家编程 第1章 C:穿越时空的迷雾 1.4 K&R C
通过这两个 hook 回顾 Set/Map 基础知识
牛血清白蛋白-葡聚糖-叶黄素纳米颗粒/半乳糖白蛋白磁性阿霉素纳米粒的制备