【linux】文件与目录命令 - sed
文章目录
- 1. 基本用法
- 2. 常用参数
- 3. 用法举例
- 4. 注意事项
sed
命令是流编辑器(Stream Editor),用于在文本中执行基本的文本替换、删除、插入和查找操作,适合处理大批量文本或文件的自动化修改任务。
1. 基本用法
-
语法:
sed [选项] '脚本' 文件 sed [选项] -e '脚本1' -e '脚本2' 文件 sed [选项] -f 脚本文件 文件
-
功能:
- 逐行处理输入文本,按脚本规则执行替换、删除、插入等操作。
-
此命令是否系统自带:此命令是系统默认自带的,无需额外安装。
2. 常用参数
-
脚本选项:
-e
:指定要执行的sed
脚本,可多次使用。-f
:从指定文件加载sed
脚本。-n
:禁止默认输出,仅显示被脚本处理过的行。
-
文件操作:
-i[SUFFIX]
:直接修改文件,备份原文件(可选后缀SUFFIX
用于指定备份扩展名)。--help
:显示帮助信息。--version
:显示命令版本信息。
-
脚本命令:
-
s/pattern/replacement/flags
:替换匹配的模式。
g
:全局替换。p
:打印替换后的行。i
:忽略大小写匹配。
-
d
:删除匹配的行。 -
p
:打印匹配的行。 -
a\text
:在指定行后追加内容。 -
i\text
:在指定行前插入内容。 -
c\text
:替换指定行内容。 -
y/source/dest
:字符转换(类似tr
命令)。
-
3. 用法举例
-
简单文本替换:
替换文件中首次出现的hello
为world
:sed 's/hello/world/' file.txt
-
全局替换:
替换每行中所有的hello
:sed 's/hello/world/g' file.txt
-
忽略大小写替换:
sed 's/hello/world/gi' file.txt
-
直接修改文件:
替换后直接保存修改:sed -i 's/hello/world/g' file.txt
-
带备份的修改:
替换后保存并备份原文件:sed -i.bak 's/hello/world/g' file.txt
-
删除行:
删除包含hello
的行:sed '/hello/d' file.txt
-
插入内容:
在匹配行后插入文本:sed '/hello/a\This is a new line' file.txt
-
打印匹配行:
仅输出包含hello
的行:sed -n '/hello/p' file.txt
-
从脚本文件中加载规则:
sed -f script.sed file.txt
-
处理标准输入:
echo "hello world" | sed 's/world/sed/' # 输出:hello sed
4. 注意事项
-
默认情况下,
sed
会将处理结果输出到标准输出,使用-i
才会修改原文件。 -
替换中的特殊字符需要转义,例如
/
:sed 's/foo\/bar/baz/' file.txt
-
脚本命令可配合地址使用,如
2s/hello/world/
仅替换第 2 行的匹配内容。 -
使用正则表达式时,默认支持基本正则,扩展正则需结合
-r
或--regexp-extended
。 -
在多平台使用时,注意 GNU
sed
和 BSDsed
的行为差异,尤其是-i
参数的语法:- GNU:
sed -i 's/a/b/' file
- BSD:
sed -i '' 's/a/b/' file
- GNU: