目录
1. Sed编辑器
1.Sed概述
2.Sed工作流程
3.Sed命令常见用法
2.对指定行操作(寻址)
1.以数字形式表示行区间
2.用字符串来过滤行
3.删除指定行
3.替换
1.字符串
2.替换整行内容
3.字符替换
4.增加(插入)内容
1. Sed编辑器
1.Sed概述
(1)sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。
(2)sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于shell脚本中,用以完成各种自动化处理任务。
2.Sed工作流程
sed 的工作流程主要包括读取、执行和显示三个过程。
(1)读取: sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
(2)执行: 默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行。
(3)显示: 发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
注:默认情况下所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。
3.Sed命令常见用法
通常情况下调用sed命令两种格式,如下所示。
(1)“参数”是指操作的目标文件,当存在多个操作对象时用,文件之间用逗号“,”分隔:
(2)scriptfile 表示脚本文件,需要用“ -f ” 选项指定,当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件。
(3)基本格式
sed -e '操作' 文件1 文件2..
sed -n -e '操作1;操作2' 文件1 文件2 ..
sed -f 脚本文件 文件1 文件2 ...
sed -i -e '操作' 文件1 文件2 ...
sed -e 'n {
操作1
操作2
}' 文件1 文件2 ...
(4)sed命令常用选项
| 选项 | 功能 |
| -e或-expression=: | 表示用指定命令或者脚本来处理输入的文本文件 |
| -f 或–file=: | 表示用指定的脚本文件来处理输入的文本文件 |
| -h 或–help | 显示帮助 |
| -n、–quiet 或 silent | 表示仅显示处理后的结果 |
| -i.bak | 直接编辑文本文件 |
| -r, -E | 使用扩展正则表达式 |
| -s | 将多个文件视为独立文件,而不是单个连续的长文件流 |
(5)sed常用的操作命令
“操作”用于指定对文件操作的动作行为,也就是 sed 的命令。
通常情况下是采用的“[n1[,n2]]”操作参数的格式。
n1、n2 是可选的,代表选择进行操作的行数,如操作需要在 5~ 20 行之间进行,则表示为“5,20 动作行为”。
常见的操作包括以下几种:
s∶替换,替换指定字符。
d∶删除,删除选定的行。
a∶ 增加,在当前行下面增加一行指定内容。
i∶ 插入,在选定行上面插入一行指定内容。
c∶ 替换,将选定行替换为指定内容。
Y∶ 字符转换,转换前后的字符长度必须相同。
p∶ 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容; 如果有非打印字符,则以 AscII码输出。其通常与_n"选项一起使用。
=∶打印行号。
l(小写L)∶打印数据流中的文本和不可打印的ASCII字符(比如结束符s、制表符\t)
sed -p 打印

sed -n:禁止sed编辑器输出

操作‘=’:打印行号
操作 ‘l’:打印数据流中的文本和不可打印的ASCII字符

sed -e 多个操作
sed -n -e '命令1' -e '命令2' 文件
或者
sed -n -e '命令1;命令2' 文件
或者
sed -n '
命令1
命令2
....
' 文件

或者使用换行打印文件内容

2.对指定行操作(寻址)
1.以数字形式表示行区间
| 作用 | 选项 |
| sed -n '#p' | #代表行号 打印第#行内容 |
| sed -n '#,@p' | #代表行号 打印第#行到第@行内容 |
| sed -n '$p' | #代表行号 打印最后一行内容 |
| sed -n '#,+@p' | #代表行号 打印第#行到第@+#行内容 |
| sed -e '#q' | #代表行号 打印第1行到第#行内容 |



打印奇数行或者偶数行


2.用字符串来过滤行

3.删除指定行
sed 'd'


sed '/#/,/@/d' 文件名
sed会读取每行的内容,从第一个位置#打开删除功能,到第二位置@删完后关闭删除功能,再继续查询与 #和@匹配的行 进行删除 一直重复此操作

3.替换
1.字符串
格式:行范围 s/旧字符串/新字符串/替换标记
替换标记
| 替换标记 | 作用 |
| 数字 | 表明新字符串将替换第几处匹配的地方 |
| g | 表明新字符串将会替换所有匹配的地方 |
| p | 打印与替换命令匹配的行,与-n一起使用 |
| w文件 | 将替换的结果写到文件中 |
(1)sed -g、sed -s 替换

替换命令的分隔符看 s后面跟的字符,3个分隔符要保持一致,如果遇到跟分隔符相同的字符则需要使用"\"来转义。
将/bin/bash 转换为 /sbin/nologin,因为替换的格式为 s/旧/新 此处的"/"为分隔符 但是/bin/bash与/sbin/nologin中的"/"为根,容易引起歧义。
可以使用"\"转义字符将"/"转义为普通字符

或者使用其他字符作为分隔符,且所有分隔符保持一致(s后面的内容就是分隔符)

添加
sed 's/^/要添加内容/' 文件 
注释行内容



删除

2.替换整行内容
替换前与替换后的字符可以不一致
sed '#c 新内容 文件名 #替换第#行的全部内容
或者
sed '/旧内容/c 新内容' 文件名 #将被筛选到(含有旧内容)的行替换为新内容

3.字符替换
替换前与替换后的字符个数需要一致
sed 'y/旧内容/新内容/' 文件名

4.增加(插入)内容
1.在行前插入内容

2.在行后插入内容

3.插入文件内容

4.剪切粘贴

5.复制粘贴

6.调换顺序

Sed是一个强大的文本解析工具,常用于自动化文本处理任务。它的工作流程包括读取、执行和显示,能对文本进行删除、替换、添加等操作。通过地址范围可以对特定行进行操作,如按行号选择、字符串过滤和删除。Sed命令的常见用法包括字符串替换、行的插入和删除等。
1091

被折叠的 条评论
为什么被折叠?



