sed编辑器
文章目录
- 一.sed命令基础
- 1.sed概念
- 2.sed的工作流程
- 3.命令格式
- 4.sed命令的常用选项
- 5.sed命令的操作符
- 二.sed命令的打印功能
- 1.打印文本文件内容
- 1.1 格式
- 1.2 默认打印方式
- 2.指定行打印
- 2.1 指定行号打印
- 2.2 只打印文件的行数
- 2.3 即打印文件的行号也打印文件的内容
- 2.4 即显示行也显示指定行内容
- 2.5 指定打印最后一行
- 2.6 指定行号的范围区间打印
- 2.7 奇偶行打印
- 2.8 对字符串过滤打印
- 3.sed使用正则表达式打印
- 3.1 sed基本正则表达式打印
- 3.1.1打印所有以字符串为开头的行
- 3.1.2 打印所有以字符串为结尾的行
- 3.1.3 从第几行开始打印到第一个字符串结尾结束
- 4.sed使用扩展正则表达式打印
- 三.sed命令的删除功能
- 1.通过行号进行删除
- 1.1 删除所有,什么也不打印
- 1.2 删除第几行,打印剩余内容
- 1.3 删除第几行到第几行,打印剩余内容
- 1.4 删除第几行到最后一行,打印剩余内容
- 1.5 除了第几行到第几行,其他全部删除
- 2.匹配字符串内容删除
- 2.1 删除包含某字符串的行
- 2.2 保留第几行到第几行之间的内容,其余删除
- 2.3 只保留第几行,其余删除
- 2.4 字符串搭配正则进行删除
- 四.sed命令的替换功能
- 1.sed命令进行文件替换
- 2.替换标记
- 3.字符串替换
- 3.1 指定替换内容,每行出现第几个替换
- 3.2 指定替换内容,所有都替换
- 3.3 以字符串为开头处理,把开头为空的替换为#
- 3.4 全部以#开头
- 4.特殊形式(字符)大小写替换
- 4.1 把所有小写字母都替换为大写——U&
- 4.2 把所有的大写字母都替换为小写——l&
- 4.3 文件内所有的首字母都换成大写——u&
- 5.整行替换
- 6.单字符替换
- 五.sed命令的添加功能
- 1.行添加
- 1.1 当前行的下一行添加
- 1.1.1 当前行的下一行添加
- 1.1.2 在最后的行后添加
- 1.2 当前行的上一行添加
- 1.2.1 当前行的上一行添加
- 1.2.2 在文件最后后面的行中添加
- 1.3 在行后读入文件内容
- 1.3.1指定行的下一行
- 1.3.2 先读取文件内容,然后再需要添加文件的末行插入读取的所有内容
- 六.sed的分组,以及字符串位置替换
- 1.分组替换字符
- 2.指定命令来对第二个文件的行进行处理——sed -f
- 2.1 文件内容替换
- 2.2 特殊格式替换
- 七.拓展
- 1.怎么解决sed命令处理容量大,或内容过多而导致执行效率慢的问题
- 2.删除文件内容但不删除文件名
- 3.删除空行的三种方法
- 4.将ifconfig-ens33 中的IP地址替换为10.10.10.10
- 5.只要版本号
- 6.查看指定时间内的日志文件(格式根据自己的日志格式复制)
一.sed命令基础
1.sed概念
sed命令是对文本内容进行增删改查,生效才会存入硬盘中,不然会存在缓冲区
sed -i————————生效,生成在文本文件当中
sed—————————临时模式,不会对文本内容发生变化,就在模式空间,用户读取之后结束
2.sed的工作流程
主要包括读取,执行和显示三个过程
(1)读取:标准输入)中读取一行内容并存储到临时的缓冲区中 (又称模式空间,pattern spacesed)。
(2)执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed 命令 将会在所有的行上依次执行
(3)显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行。
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。
3.命令格式
(1)sed -e ’操作‘ 文件1 文件2…
(2)sedsed -n-e ’操作‘ 文件1 文件2…
(3)sed -f 脚本文件 文件1 文件2…
(4)sed -i -e ’操作‘ 文件1 文件2…
4.sed命令的常用选项
| -e或-expression=: |
|---|
| -f 或–file=:表示用指定的脚本文件来处理输入的文本文件。 |
| -h 或–help:显示帮助。 |
| -i 直接修改目标文本文件 慎用 |
| -n 仅显示script处理后的结果 |
5.sed命令的操作符
| 常用选项 |
|---|
| s:替换,替换指定字符。 |
| d:删除,删除选定的行。 |
| a:增加,在当前行下面增加一行指定内容。 |
| i:插入,在选定行上面插入一行指定内容。 |
| c:替换,将选定行替换为指定内容。 |
| y:字符转换,转换前后的字符长度必须相同。 |
| p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,常和“-n”一起使用。 |
二.sed命令的打印功能
1.打印文本文件内容
1.1 格式
sed “ ” 要打印的文件名
sed '' /etc/fstab #查看文件内容
sed '' < /etc/fstab #可以支持重定向输入
cat /etc/passwd |sed '' #也可以支持管道符
例:
sed " " 123.txt #打印123.txt的内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DhCR6JxZ-1686050201396)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606134040429.png)]](https://img-blog.csdnimg.cn/68ff614c17b44e7e8923a07901175aa3.png)
1.2 默认打印方式
格式:sed -e ‘p’ 文件名
sed -n ‘p’ 文件名
sed -e 'p' 123.txt #默认打印文件内容
sed -n 'p' 123.txt #过滤默认输出的重复一次只显示当前操作符打印出来的结果
2.指定行打印
2.1 指定行号打印
格式:sed -n ‘np’ 文件名
例:
sed -n '2p' 123.txt #指定当前文件第二行打印
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKRLrvA7-1686050201397)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606135014913.png)]](https://img-blog.csdnimg.cn/da1a30270df649fa8295c3eae696f21d.png)
2.2 只打印文件的行数
格式:sed -n ‘=’ 文件名
例:
sed -n '=' 123.txt #打印出123.txt文件里有多少行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXFPYP8q-1686050201398)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606135259405.png)]](https://img-blog.csdnimg.cn/92d3cbf73ad1499eb12a70acfa7927f9.png)
2.3 即打印文件的行号也打印文件的内容
格式:sed -n ‘=;p’ 文件名
例:
sed -n '=;p' 123.txt #即打印出123.txt文件的行号也打印内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WMjJ8zjS-1686050201399)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606135706046.png)]](https://img-blog.csdnimg.cn/e193ceceee064e6984bcea17f877f69f.png)
2.4 即显示行也显示指定行内容
格式:sed -n ‘=;np’ 文件内容
例:
sed -n '=;3p' 123.txt #即显示第三行和第三行的内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VX2fnBgF-1686050201399)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606140336670.png)]](https://img-blog.csdnimg.cn/54f3e6097737420da4dc6e9154b25ed3.png)
2.5 指定打印最后一行
格式:sed -n ‘$p’ 文件名
例:
sed -n '$p' 123.txt #指定打印123.txt的最后一行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-44RoLX72-1686050201399)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606140602624.png)]](https://img-blog.csdnimg.cn/9a29942d51134ff8a624a2a283280fdd.png)
2.6 指定行号的范围区间打印
格式:sed -n ‘n,np’ 文件名
例:
(1)指定行到行打印
sed -n '1,3p' 123.txt #指定123.txt文件的1-3行打印
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrDAFicU-1686050201400)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606141323839.png)]](https://img-blog.csdnimg.cn/c3b539a9b2fb408d85153b2dadeac715.png)
(2)指定第几行到最后一行打印
格式:sed -n ‘n,$p’ 123.txt
例:
sed -n '5,$p' 123.txt #指定第五行到最后一行的内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUEtuvvq-1686050201400)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606142227497.png)]](https://img-blog.csdnimg.cn/5f556e12a2734decacdb138207b17d10.png)
(3)打印第几行和最后一行
格式:sed -n ‘np;$p’ 文件名
例:
sed -n '5p;$p' 123.txt #指定打印第五行和最后一行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iv7gWlvF-1686050201400)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606143010810.png)]](https://img-blog.csdnimg.cn/a124256398e74452a7567f67de050758.png)
(4)打印第几行和第几行
格式:sed -n ‘np;np’ 文件名
例:
sed -n '2p;6p' 123.txt #指定打印第二行和第六行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lgn72Q8z-1686050201401)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606143232798.png)]](https://img-blog.csdnimg.cn/a67768294ced4e1ab8ef9207652ed00b.png)
(5)指定打印第几行往下几行
格式:sed -n ‘n,+np’ 文件名
例:
sed -n '2,+2p' 123.txt #指定打印第二行和第二行的后两行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7q0OrZs-1686050201402)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606143537061.png)]](https://img-blog.csdnimg.cn/8093ce096f2942eaadf49362aa60abfe.png)
(6)指定打印第几行到往下第几行
格式:sed -n ‘n,+np’ 文件名
例:
sed -n '2,4p' 123.txt #指定打印第2行到往下第4行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJCwuzZh-1686050201402)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606151334613.png)]](https://img-blog.csdnimg.cn/228832bec1f14b958a4193cc068f043a.png)
2.7 奇偶行打印
(1)打印出文件的奇数行
sed -n 'p;n' jishu.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0zzW4L7-1686050201403)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606152430156.png)]](https://img-blog.csdnimg.cn/ee0654e6426f4e4cb00b4b9532c8e116.png)
(2)打印出文件的偶数行
sed -n 'p;n' oushu.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9hs07Yv9-1686050201403)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606153238483.png)]](https://img-blog.csdnimg.cn/91c78067f8e04fc59a515e1ffb3459e4.png)
(3)即打印行号也打印出偶数行
sed -n '=;p;n' oushu.txt

2.8 对字符串过滤打印
格式:sed -n ‘/想要打印所包含行的字符串/p’ 文件名
例:
sed -n '/w/p' zfc.txt #打印所有包含w的行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BwCEwyPE-1686050201404)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606154340168.png)]](https://img-blog.csdnimg.cn/1777f56d52cc4660b2deecfa867c926b.png)
sed -n '/btr/p' zfc.txt #打印btr这行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iAmoiZFj-1686050201404)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606154721443.png)]](https://img-blog.csdnimg.cn/42f0332c15fa4b68a76704dbe77dc100.png)
3.sed使用正则表达式打印
3.1 sed基本正则表达式打印
3.1.1打印所有以字符串为开头的行
格式:sed -n ‘/^打印的字符串/p’ 文件名
例:
sed -n '/^root/p' /etc/passwd #打印以root为开头的行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nzvte0MR-1686050201404)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606155808708.png)]](https://img-blog.csdnimg.cn/084c35807c1247f4b238a602585b3678.png)
3.1.2 打印所有以字符串为结尾的行
格式:sed -n ‘/打印的字符串$/p’ 文件名
例:
sed -n '/bash$/p' /etc/passwd #打印以bash为结尾的行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oVcNTjlW-1686050201405)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606160048121.png)]](https://img-blog.csdnimg.cn/00bbb1e7934d4c33b8b82ef3999dc8a6.png)
3.1.3 从第几行开始打印到第一个字符串结尾结束
格式:sed -n ‘/打印的字符串$/p’ 文件名
例:
sed -n '40,/bash$/p' /etc/passwd #从第40行开始打印到第一个bash结尾结束
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PYUnml8r-1686050201405)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606160506609.png)]](https://img-blog.csdnimg.cn/38e07a5f81a3459481b1fc440737c0ac.png)
4.sed使用扩展正则表达式打印
sed -r 支持扩展正则表达式。同时在 使用{n}、{n,}、{n,m}时,括号{}前不需要加反斜杠\ 。
例:
sed -r -n '/(99:){2,}/p' /etc/passwd #包含有两个99:的内容所在行
sed -r -n '/^root|bash$/p' /etc/passwd #包换以root开头,或者以bsah结尾的内容所在行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dJagfG5B-1686050201406)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606161635093.png)]](https://img-blog.csdnimg.cn/fba400fb0b95418ab4bc407c91787a56.png)
三.sed命令的删除功能
sed -i 时会对文本进行实际操作(建议对目标文件先进行备份,再进行操作)
1.通过行号进行删除
1.1 删除所有,什么也不打印
格式:sed ‘d’ 文件内容
例:
sed 'd' 123.txt #删除123.txt文件的所有内容,什么也不打印
1.2 删除第几行,打印剩余内容
格式:sed -n ‘nd;p’ 文件名
例:
sed -n '3d;p' 123.txt #删除第三行,打印剩余的所有内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4tuA1S6n-1686050201406)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606162350158.png)]](https://img-blog.csdnimg.cn/cc5ca8a0e969401ca4630bcdb8f7edd9.png)
1.3 删除第几行到第几行,打印剩余内容
格式:sed -n ‘n,nd;p’ 文件名
例:
sed -n '5,8d;p' 123.txt #删除5到8行,打印剩余的所有内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XGV2b6Hf-1686050201407)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606162628256.png)]](https://img-blog.csdnimg.cn/6f01f3fee0564ac9a481c8e15ceabd59.png)
1.4 删除第几行到最后一行,打印剩余内容
格式:sed -n ‘n,$d;p’ 文件名
例:
sed -n '5,$d;p' 123.txt #删除5到最后一行,打印剩余的所有内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lqxL0NWi-1686050201407)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606162807885.png)]](https://img-blog.csdnimg.cn/e17ba3ce20d7440086e9025d83a1c88c.png)
1.5 除了第几行到第几行,其他全部删除
格式:sed -n ‘n,n!d;p’ 文件名
例:
sed -n '4,6!d;p' 123.txt #除了4-6行,其他的全部删除
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9dMtp1B-1686050201407)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606163020292.png)]](https://img-blog.csdnimg.cn/3fe512b7af434ea9ad4b4941120b3242.png)
2.匹配字符串内容删除
2.1 删除包含某字符串的行
格式:sed ‘/删除的字符串/d’ 文件名
例:
sed '/one/d' 123.txt #删除包含one的行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jA2ZEo9s-1686050201408)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606163304063.png)]](https://img-blog.csdnimg.cn/4ef5211540bf4c598332632bcc576037.png)
2.2 保留第几行到第几行之间的内容,其余删除
格式:sed ‘/保留的第一个字符串/,/保留的第二个字符串/!d’ 文件名
例:
sed '/one/,/six/!d' 123.txt #除了one-six的行,其余的全部删除,反向删除
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sHr11gjD-1686050201408)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606163628843.png)]](https://img-blog.csdnimg.cn/4c97169b659a4d01ab17373750de1f0b.png)
2.3 只保留第几行,其余删除
格式:sed ‘/保留的行/!d’ 文件名
例:
sed '/six/!d' 123.txt #除了six的行,其余的全部删除,反向删除
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MwJQXcPa-1686050201409)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606163831575.png)]](https://img-blog.csdnimg.cn/ff1fb8a3de9f45d4b9ec3cdd53aa2b16.png)
2.4 字符串搭配正则进行删除
格式:sed ‘/^$/d’ 文件名
例:
sed '/^$/d' test1.txt #通过^$,来删除空行
四.sed命令的替换功能
1.sed命令进行文件替换
(1)s:替换字符串
(2)c:整行替换
(3)y:字符替换,替换前后的字符串长度必须相同
2.替换标记
(1)数字:表明新字符串将替换第几处匹配的地方
(2)g:表面新字符串将会替换所有匹配的地方
(3)p:打印与替换命令匹配的行,与-n一起使用
(4)w文件:将替换的结果写入文件中
3.字符串替换
3.1 指定替换内容,每行出现第几个替换
格式:sed -n ‘s/要替换的字符串/替换后的字符串/np’ 文件名
例:
sed -n 's/root/test/p' /etc/passwd #指定第一个root,替换为test
sed -n 's/root/test/2p' /etc/passwd #指定第二个root,替换为了test
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPa5fYWV-1686050201409)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606165115778.png)]](https://img-blog.csdnimg.cn/e7118d1474024be5b988b01a7047f766.png)
3.2 指定替换内容,所有都替换
格式:sed -n ‘s/要替换的字符串/替换后的字符串/gp’ 文件名
例:
sed -n 's/root/test/gp' /etc/passwd #所有的root都替换为test
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RCTZCqPT-1686050201409)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606165446691.png)]](https://img-blog.csdnimg.cn/74e21946a59148208ad916db1bdc6a01.png)
3.3 以字符串为开头处理,把开头为空的替换为#
格式:sed -n '/^以什么为开头的字符串/ s/^/#/p’文件名
例:
sed -n '/^root/ s/^/#/p' /etc/passwd
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Y1JLYaA-1686050201410)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606170105633.png)]](https://img-blog.csdnimg.cn/e5c5ac0e6a224bffb4ae359bb7d5ee0b.png)
3.4 全部以#开头
格式:sed -n '/ s/^/#/p’文件名
例:
sed -n 's/^/#/p' /etc/passwd
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQNrHELH-1686050201410)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606170231344.png)]](https://img-blog.csdnimg.cn/1a49f1d862e64f84af4fbdd782ddf92b.png)
4.特殊形式(字符)大小写替换
4.1 把所有小写字母都替换为大写——U&
sed 's/[a-z]/\U&/g' test.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gsv2wtA4-1686050201410)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606170809703.png)]](https://img-blog.csdnimg.cn/59a92ca3394e48588aa1e5ee0aabb417.png)
4.2 把所有的大写字母都替换为小写——l&
sed -i 's/[A-Z]/\l&/g' test.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuYHOoee-1686050201411)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606171005587.png)]](https://img-blog.csdnimg.cn/e01278cb55494c0c8f94d5ebce1c0bb0.png)
4.3 文件内所有的首字母都换成大写——u&
sed -i 's/[a-z]/\u&/' test.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UpJaV9QS-1686050201411)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606175834480.png)]](https://img-blog.csdnimg.cn/d95085ae57e448a7a622eb95e2d906b8.png)
5.整行替换
格式:sed ‘/想要替换的内容/c 替换后的内容’ 文件名
例:
sed '/Qwer/c oneone' test.txt #将test.txt中的Qwer替换为oneone
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aUnSKKO8-1686050201411)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606180313511.png)]](https://img-blog.csdnimg.cn/73da92ab6c314eb2955f91afb4121793.png)
6.单字符替换
使用y,是对单个字符进行替换,每个字符需要一一对应,不是整体替换。前后字符串长度需要一致,不然会报错
只要有匹配的单字符会全部替换
格式:sed ‘y/想要替换的单字符/替换过后的单字符/’ 文件名
例:
sed 'y/a/2/' test.txt #将a替换为2
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CkWBTAjv-1686050201412)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606180713839.png)]](https://img-blog.csdnimg.cn/6a7d05199bf2499cb22e50536c9430aa.png)
五.sed命令的添加功能
1.行添加
1.1 当前行的下一行添加
a:在下一行添加内容
1.1.1 当前行的下一行添加
格式:sed ‘/添加的行/a 添加的内容’ 文件名
例:
sed '/three/a 123' test.txt #在test.txt文件的three行的下一行添加123
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BH0AKlTQ-1686050201412)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606181607562.png)]](https://img-blog.csdnimg.cn/8d0d292cf68b4e65a42943ccd8da8899.png)
1.1.2 在最后的行后添加
格式:sed ‘$a 添加的内容’ 文件名
例:
sed '$a 123' test.txt #在test.txt文件的最后一行添加
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pa1XsYMe-1686050201412)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606181814735.png)]](https://img-blog.csdnimg.cn/66304b06159a48e28d82e6f36f31f2af.png)
1.2 当前行的上一行添加
i:在上一行插入内容
1.2.1 当前行的上一行添加
格式:sed ‘/添加的行/i 添加的内容’ 文件名
例:
sed '/three/i 123' test.txt #在test.txt文件的three行的上一行添加123
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UyUKKXwR-1686050201412)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606182450692.png)]](https://img-blog.csdnimg.cn/11138e3c4d2a4df6be73891941357669.png)
1.2.2 在文件最后后面的行中添加
格式:sed ‘$i 添加的内容’ 文件名
例:
sed '$i 123' test.txt #在test.txt的文件最后后面的行中插入123
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ry3KXve8-1686050201413)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606182713870.png)]](https://img-blog.csdnimg.cn/05a8123488034e759472dd718c9f1252.png)
1.3 在行后读入文件内容
r:在行后读入文件内容
1.3.1指定行的下一行
格式:sed ‘/指定的行/r 需要读取的文件’ 需要添加的文件名
例:
sed '/three/r 123.txt' test.txt #指定three行的下一行添加读取的内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xL7VogQG-1686050201413)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606183310175.png)]](https://img-blog.csdnimg.cn/4a317616ee83441c96a195de9df69e03.png)
1.3.2 先读取文件内容,然后再需要添加文件的末行插入读取的所有内容
格式:sed ‘/$r 读取的文件’ 需要添加的文件名
例:
sed '$r 123.txt' test.txt #先读取123.txt内容,然后再到test.txt的末行插入读取的所有内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g2cKwspn-1686050201413)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606183603628.png)]](https://img-blog.csdnimg.cn/6618274056a846b49ed498e6c854d515.png)
六.sed的分组,以及字符串位置替换
1.分组替换字符
echo bbxx | sed -r 's/(bb)(xx)/\2\1/'
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uzMrMk3C-1686050201413)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606183946831.png)]](https://img-blog.csdnimg.cn/31cf244aa59b41a5a4fe32c428e639ef.png)
echo zzjjff | sed -r 's/(zz)(jj)(ff)/\3\1\2/'
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PWA1XVDJ-1686050201414)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606184136463.png)]](https://img-blog.csdnimg.cn/3738d6850bc0491e869f1f04d4bafab3.png)
echo 你喜欢我 | sed -r 's/(.)(.)(.)(.)/\4\3\2\1/'
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jMyc32C-1686050201414)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606184425833.png)]](https://img-blog.csdnimg.cn/416032c9225547f1b4b8def859fa37af.png)
2.指定命令来对第二个文件的行进行处理——sed -f
2.1 文件内容替换
sed -f 123.txt 456.txt #将第二个文件内容替换为第一个文件内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vrt8HA5M-1686050201414)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606184914105.png)]](https://img-blog.csdnimg.cn/f5d1fcea69164231a119b774307e2457.png)
2.2 特殊格式替换
sed -f test1.txt test2.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2k90Xt7z-1686050201414)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606185212952.png)]](https://img-blog.csdnimg.cn/4183383caa1f4c3ab8660391607e303c.png)
七.拓展
1.怎么解决sed命令处理容量大,或内容过多而导致执行效率慢的问题
使用split命令进行文件分割(按行分割)
2.删除文件内容但不删除文件名
(1)sed -i ‘d’ 文件名
(2)cat /dev/null > 文件名
3.删除空行的三种方法
(1)grep -v “^$” 文件名———————过滤出非空行
(2)cat 文件名 | tr -s ”\n"——————压缩换行符
(3)sed ‘/^$/d’ 文件名————————删除空行
4.将ifconfig-ens33 中的IP地址替换为10.10.10.10
cat /etc/sysconfig/network-scripts/ifcfg-ens33 | sed '/^IPADDR/c IPADDR=10.10.10.10'
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8eoE983-1686050201415)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606190536253.png)]](https://img-blog.csdnimg.cn/e38b6df8171240b9ade7845f6bbdc2db.png)
5.只要版本号
cat bbh.txt | sed -r 's/(.*)-(.*)(\.jar)/\2/'
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qzuGqOGO-1686050201416)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606190959596.png)]](https://img-blog.csdnimg.cn/b00e540f65c74f69a50aac4d54e79de5.png)
6.查看指定时间内的日志文件(格式根据自己的日志格式复制)
cat /var/log/messages | sed -n '/18:29:45/,/18:50:01 /p'
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UPMkovly-1686050201417)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230606191324955.png)]](https://img-blog.csdnimg.cn/bbd2a437bc8045ba85b3254810102835.png)
添加日期时间内的日志文件
cat /var/log/messages | sed -n '/Jun 6 18:40:01/,/Jun 6 18:50:01 /p'

相关文章:
sed编辑器
文章目录 一.sed命令基础1.sed概念2.sed的工作流程3.命令格式4.sed命令的常用选项5.sed命令的操作符 二.sed命令的打印功能1.打印文本文件内容1.1 格式1.2 默认打印方式 2.指定行打印2.1 指定行号打印2.2 只打印文件的行数2.3 即打印文件的行号也打印文件的内容2.4 即显示行也显…...
深入理解深度学习——正则化(Regularization):稀疏表示
分类目录:《深入理解深度学习》总目录 另一种策略是惩罚神经网络中的激活单元,稀疏化激活单元。这种策略间接地对模型参数施加了复杂惩罚。我们已经在《深入理解深度学习——正则化(Regularization):参数范数惩罚》中讨…...
【Android】分别用JAVA和Kotlin实现横向扫描的动画效果
Android 横向扫描的动画可以通过使用 ViewPropertyAnimator 和 ObjectAnimator 来实现。 首先,在 XML 布局文件中创建一个 ImageView,并设置其宽度为 0dp,高度为 match_parent。然后,创建一个横向的渐变色 Drawable,并…...
长尾词挖掘,如何选择精准的长尾词优化?
长尾词的挖掘也是一门大学问,它存在多种不同的方法。最常用的方法是把关键词直接放搜索引擎的搜索框搜索和使用长尾词挖掘工具这两种。 以运动水壶为例。 关键词直接放搜索引擎的搜索框搜索,结果如下: 使用长尾词挖掘工具,…...
Python相关环境变量配置和模拟手机app登录
【java环境变量配置】 接着,打开系统->高级系统设置->环境变量。新建一个JAVA_HOME C:\Program Files\Java\jdk1.8.0_201(这里是你的安装路径,最好复制粘贴) 然后在Path下添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然后…...
c++ 11标准模板(STL) std::map(九)
定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…...
深入探索chatGPT插件:SceneXplain,Wolfram,和AppyPieAIAppBuilder
1. 引言 在这个日益依赖技术的世界中,AI插件已经成为了我们日常生活和工作的重要组成部分。在这篇博客中,我们将深入探索三个强大的AI插件:SceneXplain,Wolfram,和AppyPieAIAppBuilder,了解他们的功能&…...
华为OD机试真题B卷 Java 实现【停车场车辆统计】,附详细解题思路
一、题目描述 特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。 车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位&a…...
第二章:MySQL环境搭建
第二章:MySQL环境搭建 2.1:MySQL的下载、安装、配置 MySQL的四大版本 MySQL Community Server社区版本:开源免费、自由下载,但不提供官方技术支持,适用于大多数普通用户。MySQL Enterprise Edition企业版本࿱…...
生产环境之负载均衡LVS+keepalived方案(2)_LVS介绍
LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,linux内核2.6.X之后的版本默认已集成了LVS模块(内核模块名为:ipvs),实现了基于传输层的请求负载均衡调度方案,LVS支持的工作模…...
【parsel】------- PYTHON爬虫基础4
parsel 这个库可以对 HTML 和 XML 进行解析,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。 内容目录 from parsel import Selector提取节点提取 class 包含 item-0 的节点 提取文本获取提取到的所有 li…...
MySQL数据库从入门到精通学习第8天(表数据的查询)
表数据的查询 基本查询语句单表查询聚合函数查询多表连接查询子查询合并查询结果定义表和字段的别名使用正则表达式查询 基本查询语句 SELECT 语句非常的强大,是最常用的查询语句。他具有一个固定的格式,如下: SELECT 查询的内容 FROM 数据…...
什么是IPAM?如何使用IPAM来管理IP地址和DHCP?
在计算机网络中,IPAM(IP Address Management)是一种用于管理IP地址和DHCP(Dynamic Host Configuration Protocol)的工具或系统。IPAM旨在简化和集中管理IP地址分配、子网划分和DHCP配置等任务。本文将详细介绍IPAM的概…...
PCIE学习
目录 一、PCIE结构1、层次结构2、数据包TLPDLLP PCIE寄存器配置1、基址寄存器的作用2、基址寄存器的位置 三、PCIE读取数据 一、PCIE结构 1、层次结构 绝大多数的总线或者接口,都是采用分层实现的。PCIe也不例外,它的层次结构如下: PCIe定…...
商业智力,Social焕新|数说故事重磅发布“SocialGPT”,国内首个专注Social领域的商业大模型
AGI时代的到来,市场风云变幻,世界正在经历着一场技术革命的颠覆性洗礼。 2023年6月6日6时,数说故事正式对外发布数说故事“SocialGPT”,国内首个专注Social领域的商业大模型。数说故事“SocialGPT”大家昵称它为“社牛”大模型&a…...
STM32HAL库RS485-ModBus协议控制伺服电机
STM32HAL库RS485-ModBus协议控制伺服电机 一个月前,接手了一个学长的毕设小车,小车采用rs485通信的modbus协议驱动轮毂电机,与往常我学习的pwm控制电机方法大相径庭,在这里以这篇博客记录下该学习过程。 小车主要架构 电机型号 …...
【医学图像】图像分割系列.3 (uncertainty)
介绍几篇使用不确定性引导的医学图像分割论文:UA-MT(MICCAI2019),SSL4MIS(MICCAI2021),UG-MCL(AIIM2022). Uncertainty-aware Self-ensembling Model for Semi-supervise…...
Java有线程安全的set吗?
在Java中,有线程安全的Set实现。一个常用的线程安全的Set实现是ConcurrentSkipListSet。ConcurrentSkipListSet是一个有序的集合,基于跳表(SkipList)的数据结构实现。它提供了线程安全的操作,并且具有较好的性能。 接下来笔者用一段简单的Jav…...
《HelloGitHub》第 86 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …...
LDGRB-01 3BSE013177R1 将数字输入和继电器输出结合
LDGRB-01 3BSE013177R1包的一部分是全面的通信选项,包括Modbus主/从或CS31,这种产品很少提供。128kB的用户内存和0.1秒/指令的程序处理时间只是AC500-eCo令人印象深刻的性能的两个例子。除了与现有AC500系列的互操作性,AC500-eCo系统还使用基…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
