Sed命令
2022/9/16 6:19:59
本文主要是介绍Sed命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Sed命令
目录- Sed命令
- 单行模式空间
- 多行模式空间
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等
单行模式空间
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数
-
-n 仅显示script处理后的结果。
-
-i 直接修改读取文件
-
-e 以选项中指定的script来处理输入的文本文件。
-
-f 以选项中指定的script文件来处理输入的文本文件。
-
-h 或--help 显示帮助。
动作
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现,目前的下一行。
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行。
- d :删除,因为是删除,所以 d 后面通常不接任何东西。
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现,目前的上一行。
- p :打印,亦即将某个选择的数据印出,通常 p 会与参数 sed -n 一起运行。
- s :取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正则表达式。
- n :读取匹配参数的下面的所有行
- y:把一个或多个字符替换成另一个字符
[root@localhost ~]# cat dxy 1 2 3 //a,新增 [root@localhost ~]# sed '3a4' dxy #在第3行下添加4 1 2 3 4 [root@localhost ~]# sed '/3/a4' dxy #在匹配3的下一行添加4 1 2 3 4 //c,取代 [root@localhost ~]# sed '1c2' dxy #将第一行取代为2 2 2 3 [root@localhost ~]# sed '/1/c2' dxy #匹配参数1取代为2 2 2 3 //d,删除 [root@localhost ~]# sed '3d' dxy #删除第三行 1 2 [root@localhost ~]# sed '/1/d' dxy #匹配参数1删除 2 3 //i,插入 [root@localhost ~]# sed '3i3' dxy #在第三行插入3 1 2 3 3 [root@localhost ~]# sed '/1/i1' dxy #匹配参数的前一行插入1 1 1 2 3 //p,打印 [root@localhost ~]# sed -n '1p' dxy #打印第一行 1 [root@localhost ~]# sed -n '/3/p' dxy #打印指定参数3 3 [root@localhost ~]# cat dxy 1 22 333 //s,取代 #将匹配到的1取代为3 [root@localhost ~]# sed 's/1/3/' dxy 3 22 333 #当一行出现多个相同的参数,就会出现只能取代一个的问题 [root@localhost ~]# sed 's/3/2/' dxy 1 22 233 //g 行内全面替换 #想要讲此行的所有相同的参数都取代,需要加上g [root@localhost ~]# sed 's/3/2/g' dxy 1 22 222 //n #匹配参数1下面的所有行打印出来 [root@localhost ~]# sed -n '/1/n;p' dxy 22 333 [root@localhost ~]# cat dxy 1 a 22 ab 333 abc //y #将第二和第三行的a换成A,c换成B [root@localhost ~]# sed '2,3y/ac/AB/' dxy 1 a 22 Ab 333 AbB
多行模式空间
-
N:读取匹配到的行的下一行追加至模式空间
-
P:打印模式空间开端至\n内容,并追加到默认输出之前
-
D:只删除模式空间的第一行。
示例:
[root@localhost ~]# cat dxy here are examples of the UNIX System. Where UNIX System appears, it should be the UNIX Operating System. [root@localhost ~]# sed '/UNIX$/{N;/\nSystem/s// Operating &/;P;D}' dxy here are examples of the UNIX Operating System. Where UNIX Operating System appears, it should be the UNIX Operating System.
命令 | 缩写 | 功能 |
---|---|---|
Hold | h | 将模式空间的内容复制到保持空间 |
Hold | H | 将模式空间的内容追加到保持空间 |
Get | g | 将保持空间的内容追复制模式空间 |
Get | G | 将保持空间的内容追追加模式空间 |
Exchange | x | 交换保持空间和模式空间的内容 |
示例:
[root@localhost ~]# cat 123 1 2 11 22 111 222 #匹配有1的行,h将将模式空间的内容追加到保持空间,d删除模式空间的内容 [root@localhost ~]# sed '/1/{h;d}' 123 2 22 222 此时 模式空间: 空 保持空间: 1 11 111 #匹配有2的行,G将保持空间的内容追加到模式空间 [root@localhost ~]# sed '/1/{h;d};/2/{G}' 123 2 1 22 11 222 111 此时 模式空间: 2 1 22 11 222 111
这篇关于Sed命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding