重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Linux 命令大全
从化网站建设公司创新互联建站,从化网站设计制作,有大型网站制作公司丰富经验。已为从化上千提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的从化做网站的公司定做!
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
Sed是一项Linux指令,全称是Stream
EDitor,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。Sed主要用于自动编辑一个或者多个文件,多用于脚本中对文件的处理。
Sed命令可以对文件进行增加、删除、修改和查找操作,所以学好sed命令是写自动化脚本必须的基础之一。
一、基本正则列表与扩展正则
二、sed 文本处理工具的用法介绍
三、认识sed工具的 n、r、i 选项指令
四、认识sed工具的 p、d、s 条件指令
五、认识sed工具的 i、a、c 条件指令
六、认识sed高级应用 r、w 条件指令
七、综合案例
Linux sed
Stream EDitor,流式编辑器
一、基本正则列表与扩展正则
根据推出时间的不同,分为基本正则和扩展正则,扩展正则在基本正则的基础上做了一些优化和新增了一些正则表达符号,因为一些命令没有及时更新,所以你可能会遇到有些命令只支持基本正则,不支持扩展正则,或者需要添加一些支持扩展正则的选项。
关于正则与扩展正则区别的详细介绍可以看我另一篇shell 正则的介绍
基本正则列表
扩展正则列表
二、sed 文本处理工具的用法介绍:
相关说明如下:
sed命令的常用选项如下:
sed命令常用条件指令如下
三、认识sed工具的 n、r、i 选项指令
# sed [选项] '条件指令' 文件.. ..
上面的条件指令 我们可以拆分为 # sed [选项] '范围界定+操作指令' 文件.. .. 的格式这样更容易理解
sed命令可以使用行号或正则做为条件匹配:
1)sed命令的 -n 选项
执行p打印等过滤操作时,希望看到的是符合条件的文本。但不使用任何选项时,默认会将原始文本一并输出,从而干扰过滤效果。比如,尝试用sed输出/etc/hosts的第1行:
可以发现所有的行都被显示出来了(第1行重复2次)。—— 正确的用法应该添加 -n 选项,这样就可以只显示第1行了:
行号可以是连续的行号,如打印passwd第3到第6行账户的信息:
2)sed命令的 -r 选项
需要用到扩展正则时,需要加 -r选项
3)sed命令的 -i 选项
正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改:
若希望直接修改文件内容,应添加选项 -i 。
需要特别注意的是,和一些指令组合和使用的先后顺序都会对最终输出结果产生影响
例如: 指令 -n、和操作操作p
比如,直接删除test.txt(自行创建一个任意内容的文件)的第1~4行:
下文中关于使用sed修改文件的示例中,为了避免大家在练习过程中因误操作导致系统故障,命令省略 –i 选项,不再逐一说明。需要时,大家可自行加上此选项。
4)多个指令可以使用分号隔离
用分号来隔离多个操作,比如:
1)行号案例
2)正则案例
3)没有条件,则表示匹配所有行
四、认识sed工具的 p、d、s 条件指令
1)下面看看sed工具的p指令案例集锦(自己提前生成一个a.txt文件)
2)下面看看sed工具的d指令案例集锦(自己提前生成一个a.txt文件)
3)sed命令的s替换基本功能(s/旧内容/新内容/选项):
4)下面看看sed工具的s指令案例集锦(自己提前生成一个a.txt文件)
注意:替换操作的分隔“/”可改用其他字符,如#、等,便于修改文件路径
以下操作使用nssw.txt作为测试文件。
参考数据文件内容如下:
5)删除文件中每行的第二个、最后一个字符
分两次替换操作,第一次替换掉第2个字符,第二次替换掉最后一个字符:
6)将文件中每行的第一个、倒数第1个字符互换
每行文本拆分为“第1个字符”、“中间的所有字符”、“倒数第1个字符”三个部分,然后通过替换操作重排顺序为“3-2-1”:
7)删除文件中所有的数字
因原文件内没有数字,行首也没有空格,这里在内容中新增一些数字另外新几行内容 首行添加几行空格,生成一个新测试文件以 nssw2.txt
以nssw2.txt文件为例,删除所有数字、行首空格的操作如下:
8)为文件中每个大写字母添加括号[]
使用“()”可实现保留功能,所以可参考下列操作解决:
五、认识sed工具的 i、a、c 条件指令
# sed [选项] '条件指令' 文件..
sed工具的多行文本处理操作:
基本语法格式案例:
1)sed命令的 i 指定行之前插入基本功能
2)sed命令的a追加基本功能
3)sed命令的c替换基本功能
六、认识sed高级应用 r、w 条件指令
1)sed命令的 r 读取文件
2)sed命令的 w 保存到文件
七、综合案例
1) 综合案例1
2)综合案例2 脚本应用
在生产环境中,往往没有条件给我们去debug排查,更多时候我们是通过日志来看具体的报错日期。
但是日志往往是一直在实时更新,而且记录条数庞大,很难直接定位到错误信息。这个时候,就可以利用sed命令来截取指定时间段内的日志(也是网上大多数博主的做法)。
具体命令如下:
这条命令可以查询2020.10.13号当天9点到9点十分中间的所有的日志信息。
但是这条命令的使用有两个前提(很多网上的博主都没有提到)
第一,日志输出的日期格式是要满足命令中的格式 ,如果不是的话就跟着实际的格式改
第二,输入的日期必须要真实存在!!! ,比如说9点整刚好没有日志输出,那么这条命令就会失效
更加通配的命令可以是这样, 使用 号*
这样无论九点整的时候是否有日志产生,就都可以获取到9点整到现在的所有日志了
使用 ,将截取到的内容输出到指定的文件中,方便进一步查看
ps:在实际操作中,我们一般会在后面加grep命令做进一步的关键字过滤
三剑客各有所长,和锅锅一一搞起就是了!
使用示例:
使用示例:
使用示例:
sed [选项] s/[pattern]/[replace]/[flags]
[选项]常用的几个参数:
[pattern]
含义:待匹配的需要替换的内容。
[replace]
常见的特殊含义字符:
[flags]
常见的可选参数:
多个sed命令依次执行,用分号分割或加选项 -e,
使用示例:
把 test.html 文件中的第二个 body 替换为 /body 。
分析实际就是把第二个 body 替换为 /body,命令如下。
把 test.html 文件中的第二个 body 替换为 /body 。
分析实际就是把第二个 body 替换为 /body,命令如下。
编写执行脚本的步骤如下:
touch sed.sh
sed.sh 中写入脚本内容:
对sed.sh 脚本赋予可执行权限
chmod ug+x sed.sh
执行sed.sh 脚本,对文件进行处理
sed -i -f sed.sh test.html
sed简介:流编辑工具,用来对文本进行过滤与替换操作。
sed流程:sed通过一次仅读取一行内容来对某些指令进行处理后输出。
1、sed通过文件或管道读取文件内容,但sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,称之为模式空间。
2、所有的指令操作都是在模式空间找那个进行
3、sed根据相应的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出(即屏幕上)。
sed基本语法格式:
用法:sed[选项]...{脚本指令}[输入文件]...
选项: -version 显示sed版本
-help :显示帮助文档
-n,-quiet,-silent静默输出,默认情况下,sed程序在所有的脚本指令执行完毕后,将自动打印模式空间中的内容。
-e script允许多个脚本指令被执行
-f script-file从文件中读取脚本指令,对编写自动化脚本程序很实用
-i ,-in-place 该选项直接修改源文件
-l N 该选项指定l指令可以输出的行长度,l指令为输出非打印字符。
-posix 禁用GNU sed扩展功能。
-r 在脚本指令中使用扩展正则表达式。
-s,-separate 默认情况下,sed将把输入的多个文件名作为一个长的连续的输入流。而GNU sed则允许把它们当作单独的文件。
-u,-unbuffered 最低限度的缓存输入与输出
a,append表示追加指令;
i,insert表示插入指令;
d,delete表示删除指令;
s,substitution表示替换指令。
sed脚本指令的基本格式是:
[地址,即路径]命令(有些命令仅可以对一行操作,有些可以对多行操作),命令也可以用花括号进行组合,使命令序列可以作用于同一个地址。
address{
command1
command2
command3
}
sed的基本工作方式是:
sed的替换命令s:
1、全局替换 : s/old/new/g ,其中g为全局替换,用于替换所有出现的次数; /如果和正则匹配的内容冲突可以使用其他符号,如 : s@old@new@g
2、标志位
为什么要有多行模式: 配置文件一般有单行出现,但也有使用json或XML格式的配置文件,为多行出现。
多行模式处理命令N、D、P