顾文强
顾文强
Published on 2025-01-18 / 35 Visits
0
0

Linux sed 命令详解

sed(stream editor)是一个用于文本处理的强大工具,它能够对文本进行插入、删除、替换、搜索等操作。sed 基本上是以行为单位进行处理的,也可以处理整个文件。以下是对 sed 命令的详细解释和使用示例。

1 基本语法

sed [选项] '脚本' 文件名

1.1 常用选项

-n:只输出被脚本处理过的行。

-e:允许多点编辑。

-f:将脚本写在一个文件中使用 -f 脚本文件调用。

-i:直接编辑文件内容。

1.2 脚本格式

sed 脚本通常由地址和命令组成:

[地址]命令

1.3 地址

地址可以是行号或者模式匹配:

10:表示第10行。

1,5:表示从第1行到第5行。

/pattern/:表示匹配 pattern 的行。

1.4 命令

a\:在匹配行后面插入文本。

i\:在匹配行前面插入文本。

c\:用新文本替换匹配行。

d:删除匹配行。

p:打印匹配行(一般与 -n 选项一起使用)。

s/pattern/replacement/:用 replacement 替换 pattern。

1.5 示例

‌1.5.1 打印文件内容‌

sed '' filename

1.5.2‌ 删除第3行‌

sed '3d' filename

1.5.3‌ 删除第1到第3行‌

sed '1,3d' filename

1.5.4‌ 删除包含 "error" 的行‌

sed '/error/d' filename

1.5.5‌ 替换 "old" 为 "new"‌

sed 's/old/new/g' filename

1.5.6‌ 在第2行后插入 "Inserted line"‌

sed '2a\Inserted line' filename

1.5.7‌ 在第2行前插入 "Inserted line"‌

sed '2i\Inserted line' filename

1.5.8‌ 将第3行替换为 "This is the new line"‌

sed '3c\This is the new line' filename

1.5.‌9 打印包含 "pattern" 的行‌

sed -n '/pattern/p' filename

1.5.10 直接修改文件(需要小心使用)‌

sed -i 's/old/new/g' filename

2 高级用法

2.1 多重编辑‌

sed -e '1d' -e 's/old/new/g' filename

2.2 脚本文件‌

将 sed 命令写入一个脚本文件,然后使用 -f 选项调用:

# content of script.sed

1d
s/old/new/g
sed -f script.sed filename

2‌.3 条件命令‌

只有在某个条件满足时才执行命令:

sed '/pattern/{s/old/new/g;}' filename

3 总结

sed 是一个功能非常强大的文本处理工具,通过灵活使用地址和命令,几乎可以完成任何文本处理任务。掌握 sed 可以大大提高处理文本的效率,是 Linux 环境下不可或缺的技能之一。


Comment