一、sed介绍
sed是一种流编辑器,用于对文本进行处理和转换。它可以从输入流中读取文本,并根据指定的规则进行编辑和替换。sed通常用于在命令行中进行文本处理,可以实现搜索、替换、删除、插入等操作。
工作流程:seq 的工作流程主要包括读取、执行和显示三个过程。
默认情况下所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非使用 "sed -i" 修改源文件、或使用重定向输出到新的文件中。
二、基本用法
sed [option]... 'script;script;...' [input file...]
选项 自身脚本语法 支持标准输入管道
选项:
-e —— 用指定命令或者脚本来处理输入的文本文件,只有一个操作命令时省略,一般在执行多个操作命令使用
-f ——用指定的脚本文件来处理输入的文本文件
-n ——不输出模式空间内容到屏幕,即不自动打印,可以与 p 命令一起使用完成输出
-r -E ——使用扩展正则表达式
-h ——显示帮助
-i ——直接修改目标文件
-i.xxx ——备份文件并原处编辑
-s ——将多个文件视为独立文件,而不是单个连续的长文件流
操作符:
s 替换,替换指定字符
d 删除,删除选定的行
a 增加,在当前行下方增加一行指定内容
i 插入,在选定行上方插入一行指定内容
c 替换,将选定行替换为指定内容
w 保存模式匹配的行至指定文件
r 读取指定文件的文本至模式空间中匹配的行后
y 字符转换,转换前后的字符长度必须相同
p 打印行内容。如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与"-n"选项一起使用
= 打印行号
l(小写L) 打印数据流中的文本和不可打印的ASCII字符(如结束符$ 制表符\t)
2.1打印内容
2.1.1打印指定内容
2.1.2打印指定多行内容
2.1.3打印多行内容后退出
打印三行后退出
2.1.4打印最后一行,使用通配符$
2.1.5支持正则表达式,打印范围内容
以r开头 f开头结尾 第二轮以r开头 后面没有以f开头结尾 则显示全部
2.1.6过滤关键字
从第二行开始,找到root为止
2.1.7打印奇偶数行
2.2插入内容
2.2.1在指定行下方增加一行指定内容
2.2.2在指定行下方\n插入内容
2.2.3在指定行前插入内容
2.2.4将seq2.txt文件内容放到第二行后面
2.3删除内容
2.3.1删除指定行
2.3.2指定删除多行
2.3.3删除空行
2.3.4删除以指定字符结尾的行
2.3.5备份再删除
查看备份文档
2.4替换内容
2.5取反
2.6显示行号
2.6.1换行显示行号
2.6.2显示第二行内容
三、搜索替代
格式:
sed 行范围 s/旧字符串/新字符串/替换标记
替换标记:
数字:表明新字符串将替换第几处匹配的地方
g : 表明新字符串将会替换所有匹配的地方
p : 打印与替换命令匹配的行,与 -n 一起使用
w 文件 :将替换的结果写到文件中
& 指代之前找到的内容
3.1修改selinux开机不自启配置文件
3.2修改全局,后面加g
sed -i 's/root/admin/g' /etc/passwd
#将全局出现的root修改为admin
3.3指代变量
&指代之前找到的内容