博客网站需求分析,seo工作室,有没有专门做儿童房的网站,营销型网站和普通网站sed详解1. 概述 今天单独拉出一章来讲述下sed命令。因为sed命令确实内容太多#xff0c;不过也是比较灵活的#xff0c;好了不废话了。我们开始吧 1.2 原理解析 shell脚本虽然功能很多#xff0c;但是它最常用的功能还是处理文本文件#xff0c;尤其是在正常的业务操作流程…sed详解1. 概述 今天单独拉出一章来讲述下sed命令。因为sed命令确实内容太多不过也是比较灵活的好了不废话了。我们开始吧 1.2 原理解析 shell脚本虽然功能很多但是它最常用的功能还是处理文本文件尤其是在正常的业务操作流程场景中比如检查日志文件、读取配置、处理数据等现象虽然我们能够使用echo、cat、、、|等符号实现文件内容的操作但是整个过程有些繁琐。所以我们需要一种更为轻便的文本编辑工具sed就是其中的一种。 简介 2. 基本格式
2.1 轮廓格式
基本格式 sed [参数] 匹配条件 [动作] [文件名]
注意匹配条件和动作两侧有动作可以有多个彼此间使用;隔开比如 2p;4p2.2 参数
参数详解参数为空 表示sed的操作效果实际上不对文件进行编辑缓存区所有信息都显示-n 不输出模式空间内容到屏幕即不自动打印所有内容-e 基于命令实现对文件的多点编辑操作-f 从指定文件中读取编辑文件的”匹配条件动作”-r 支持使用扩展正则表达式-i.bak 复制文件原内容到备份文件然后对原文件编辑-i 表示对文件进行编辑注意mac版本的bash中使用 -i参数必须在后面单独加个东西 -i -i -r 支持 -ri 支持-ir 不支持-ni 危险选项,会清空文件2.3 行数匹配
匹配条件分为两种数字行号或者关键字匹配
数字行号空 表示所有行 n 表示第n行 $ 表示末尾行n,m 表示第n到m行内容 n,m 表示第n到nm行~步进 1~2 表示奇数行 2~2 表示偶数行关键字匹配格式/关键字/注意隔离符号 / 可以更换成 、#、等符号根据情况使用如果关键字和隔离符号有冲突就更换成其他的符号即可。/关键字1/,/关键字2/ 表示关键字1所在行到关键字2所在行之间的内容n,/关键字2/ 表示从第n行到关键字2所在行之间的内容2.4 动作详解
动作详解-a[\text] 在匹配到的内容下一行增加内容支持\n实现多行追加-i[\text] 在匹配到的内容当前行增加内容-c[\text] 在匹配到的内容替换内容-d|p 删除|打印匹配到的内容-s 替换匹配到的内容W /path/somefile 保存模式匹配的行至指定文件r /path/somefile 读取指定文件的文本至模式空间中 为模式空间中的行打印行号! 模式空间中匹配行取反处理
注意上面的动作应该在参数为-i的时候使用不然的话不会有效果3. 参数【n】使用详解 不输出模式空间内容到屏幕即不自动打印所有内容. 3.1 打印指定行数
[rootVM-8-3-centos 20230227]# sed -n 2p sed.txt
nihao sed4 sed5 sed6
[rootVM-8-3-centos 20230227]#
3.2 过滤IP段 所在行
[rootVM-8-3-centos 20230227]# ifconfig eth0 | sed -n 2pinet 10.0.8.3 netmask 255.255.252.0 broadcast 10.0.11.255
[rootVM-8-3-centos 20230227]#
3.3 正则匹配到内容
[rootVM-8-3-centos 20230227]# sed -n /sed4/p sed.txt
nihao sed4 sed5 sed6
[rootVM-8-3-centos 20230227]#3.4 输出奇数行
[rootVM-8-3-centos 20230227]# sed -n 1~2p sed.txt
nihao sed1 sed2 sed3
nihao sed7 sed8 sed93.5 输出偶数行
[rootVM-8-3-centos 20230227]# sed -n 0~2p sed.txt
nihao sed4 sed5 sed6
nihao sed10 sed11 sed123.6 实现多点输出
[rootVM-8-3-centos 20230227]# sed -n -e 1p -e 3p sed.txt
nihao sed1 sed2 sed3
nihao sed7 sed8 sed9
[rootVM-8-3-centos 20230227]#4. 符号【s】详解(内容替换)
4.1 基本格式
命令格式sed -i [替换格式] [文件名]源数据 | sed -i [替换格式]注意替换命令的写法s### --- s#原内容## --- s#原内容#替换后内容#隔离符号 / 可以更换成 、#、等符号4.2 表现形式
表现样式样式一替换指定匹配的内容sed -i 行号s#原内容#替换后内容#列号 [文件名]echo 源数据 | sed -i 行号s#原内容#替换后内容#列号样式二替换所有的内容sed -i s#原内容#替换后内容#g [文件名]echo 源数据 | sed -i 行号s#原内容#替换后内容#g样式三: 替换指定的内容sed -i 行号s#原内容#新增信息#列号 [文件名]- 这里的符号代表源内容实现的效果是 原内容新内容4.3 综合案例
4.3.1 替换单个
sed -i s#sed#SED# sed.txt4.3.2. 替换全部
sed -i s#sed#SED#g sed.txt4.3.3 指定行号内容替换
sed -i 2s#sed#SED sed.txt4.3.4 指定列号内容替换
sed -i s#sed#SED#2 sed.txt5. 符号【a\】增加操作
5.1 基本格式
作用在指定行号的下一行增加内容
格式sed -i 行号a\增加的内容 文件名
注意如果增加多行可以在行号位置写个范围值彼此间使用逗号隔开例如sed -i 1,3a\增加内容 文件名5.2 综合实践
5.2.1 单行添加
sed -i 2a\ceshi-2 sed.txt5.2.2 多行增加
sed -i 1,3a\ceshi-- sed.txt6. 插入操作
6.1 基本格式
作用在指定行号的当行增加内容
格式sed -i 行号i\增加的内容 文件名
注意如果增加多行可以在行号位置写个范围值彼此间使用逗号隔开例如sed -i 1,3i\增加内容 文件名6.2 综合案例
6.2.1 多行插入
sed -i 1,2i\ceshi-- sed.txt7. 删除操作
7.1 基本格式
作用指定行号删除
格式sed -i 行号d 文件名
注意如果删除多行可以在行号位置多写几个行号彼此间使用逗号隔开例如sed -i 1,3d 文件名7.2 综合实践
sed -i 1,2d sed.txt8. 进阶匹配
8.1 基本格式
内容匹配/关键字内容/注意隔离符号 / 可以更换成 、#、等符号根据情况使用如果关键字和隔离符号有冲突就更换成其他的符号即可。/关键字1/,/关键字2/ 表示关键字1所在行到关键字2所在行之间的内容n,/关键字2/ 表示从第n行到关键字2所在行之间的内容/关键字1/,n, 表示从关键字1所在行到第n行之间的内容/关键字1/,n, 表示从关键字1所在行到(所在行n行)之间的内容8.2 综合示例
查看匹配的内容 多行信息匹配
匹配内容到第6行内容
第一个行到匹配的内容
匹配内容以及下面3行的内容 9. 修改实践
过滤#开头以及空行
sed /^$/d;/^#/d nginx.conf过滤#开头以及空行。 同时进行备份
sed -i.bak /^#/d;/^$/d nginx.conf借助 进行内容替换扩充
head -n 1 /etc/passwd | sed -n s/root/user/gp