本人github
sed
是一种用于处理文本的流编辑器(stream editor)。它是一种非交互式的命令行工具,可以用来对文本内容进行各种编辑操作,比如查找、替换、删除、插入等。sed
常用于 Unix 和 Linux 系统中,尤其适合批量处理文本文件。
sed
的基本用法
sed
的工作原理是逐行读取输入流(例如文件或命令的输出),对每一行应用指定的编辑规则,然后输出结果。它既可以将结果显示在终端上,也可以直接修改文件内容。
主要功能和语法
sed
的基本语法格式如下:
sed [选项] '命令' 文件名
其中:
[选项]
:可以是-i
、-n
等。'命令'
:sed
命令,比如替换、删除等。文件名
:要处理的文件。
常用命令和示例
-
替换字符串
替换文件中的某个字符串,使用
s
命令(substitute 替换):sed 's/old/new/' file.txt
这个命令会将
file.txt
中每一行的第一个old
替换为new
。如果想替换每一行中所有的old
,需要加上g
(global 全局)选项:sed 's/old/new/g' file.txt
-
删除指定的行
删除文件中的某一行或多行:
sed '2d' file.txt
这个命令会删除
file.txt
中的第 2 行。如果要删除第 2 到第 4 行,可以使用:
sed '2,4d' file.txt
-
在指定行后插入内容
在第 3 行后插入一行
new line
:sed '3a new line' file.txt
a
表示 append(追加)。 -
打印特定行
打印
file.txt
中第 1 行到第 3 行:sed -n '1,3p' file.txt
-n
表示只输出匹配的内容,p
表示打印。 -
直接修改文件内容
默认情况下,
sed
只会输出修改后的结果,并不会修改原文件。如果要直接修改文件内容,可以使用-i
选项:sed -i 's/old/new/g' file.txt
这个命令会将
file.txt
中的所有old
替换为new
,并直接保存修改。
sed
的常见用途
- 查找并替换文件中的内容
- 删除或插入特定的文本行
- 批量修改多个文件
- 处理日志文件或配置文件的内容
- 编写脚本来自动化文本处理任务
例子
假设 file.txt
的内容是:
hello world
hello OpenAI
-
使用
sed 's/hello/hi/' file.txt
会输出:hi world hi OpenAI
但是
file.txt
的内容并没有改变。 -
使用
sed -i 's/hello/hi/' file.txt
则会直接修改file.txt
的内容,内容变为:hi world hi OpenAI
总结
sed
是一个非常强大且灵活的文本处理工具,特别适用于批量文本替换和文件内容的自动化处理。它的简单命令语法使得用户可以高效地完成复杂的文本编辑任务,是 Unix/Linux 系统管理员和脚本编写者常用的工具之一。