linux sed
2022/9/15 5:17:23
本文主要是介绍linux sed,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- linux sed
- 参数总结
- 实例
linux sed
参数总结
sed [-hnV][-e<script>][-f<script文件>][文本文件] -e <script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。 -f <script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。 -h或--help 显示帮助。 -n或--quiet或--silent 仅显示script处理后的结果。 -V或--version 显示版本信息。 a 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d 删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ s 取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
实例
//使用sed 在第四行后添加新字符串 //sed处理的文件不能是空的,它基于行来处理的文件流编辑器,如果文件为空的话,它是处理不了的 使用sed命令后,输出结果如下: sed -e 4a\newline testfile //在指定行前或后新增一行 //在包含www.baidu.com的行前面或后面添加多一行内容www.qq.com //匹配行前加 sed -i '/www.baidu.com/i www.qq.com' domain.file //匹配行后加 sed -i '/www.baidu.com/a www.qq.com' domain.file //匹配下一行并修改 //n命令-->移动到匹配行的下一行,替换匹配到的行数的下一行 sed -i '/i love you/{n;s/year/year1/;}' sed.c //sed 只替换匹配到的第一个 sed -i '0,/pattern/s/pattern/replacement/' filename //3是第三行,a是插入在第三行后,第三行前就用i,aaa是要插入的内容 sed -i "3 a aaa" file //n读入下一行到sed的模式空间;d删除模式空间内容 sed -i '/bangngfdggh/{n;d}' yourfile //只要删除第 2 行 nl /etc/passwd | sed '2d' //要删除第 3 到最后一行 nl /etc/passwd | sed '3,$d' //在第二行插入,原本的第2行变成第3行 nl /etc/passwd | sed '2i drink tea' //如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer? nl /etc/passwd | sed '2a Drink tea or ......\ > drink beer ?' //将第2-5行的内容取代成为No 2-5 number nl /etc/passwd | sed '2,5c No 2-5 number' + 文件(aaa.txt?) //仅列出 /etc/passwd 文件内的第 5-7 行 nl /etc/passwd | sed -n '5,7p' //搜索 /etc/passwd有root关键字的行 nl /etc/passwd | sed '/root/p' //删除/etc/passwd所有包含root的行,其他行输出,第一行的匹配root已经删除了 nl /etc/passwd | sed '/root/d' 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh //etc/passwd中root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:最后的q是退出 nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}' //一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/' //-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。 //在 最后一行加入 # This is a test: sed -i '$a # This is a test' regular_express.txt //$ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增 # This is a test! //要求:在1111之前添加AAA,方法如下: sed -i 's/指定的字符/要插入的字符&/' 文件 sed -i 's/1111/AAA&/' aaa.txt //要求:在1111之后添加BBB,方法如下: sed -i 's/指定的字符/&要插入的字符/' 文件 sed -i 's/1111/&BBB/' /tmp/aaa.txt 001111BBB //修改计划任务的时候用sed无法忽略前面的* * 8 * *,所以sed,注释计划任务 sed "s/^.*\/home\/tech\/crontab\/bin\/update_clamav.sh/#&/g" /var/spool/cron/root //可以这样注释 sed -i '/time_test/s/^/#/g' /var/spool/cron/root [root@linux06 ~]# crontab -l // 要求:在每行的头添加字符,比如"HEAD",命令如下: [root@localhost ~]# sed -i 's/^/HEAD&/' /tmp/input.txt [root@localhost ~]# cat /tmp/input.txt HEADnull HEAD000011112222 HEAD HEADtest 20 //要求:在每行的尾部添加字符,比如"tail",命令如下: [root@localhost ~]# sed -i 's/$/&tail/' /tmp/input.txt [root@localhost ~]# cat /tmp/input.txt HEADnulltail HEAD000011112222tail HEADtail HEADtesttail //1."^"代表行首,"$"代表行尾 //2.'s/$/&tail/g'中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了,否则只会替换每行第一个,而不继续往后找 [root@bj-lvs-mx-pop-lvs1 tmp]# sed "s/aaa A 211.150/aaa A 192/g" /tmp/aaa.txt aaa A 192 saaa A 192 [root@bj-lvs-mx-pop-lvs1 tmp]# sed "s/^aaa A 211.150/aaa A 192/g" /tmp/aaa.txt aaa A 192 saaa A 211.150
这篇关于linux sed的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南