sed (Stream Editor)
核心功能:编辑/替换/删除。
它是一个流编辑器,主要用于对文本进行逐行的非交互式修改(如批量替换、删除特定行)。
特点:默认不会直接修改原文件(除非加 -i),而是将结果输出到屏幕。
口诀:"我要怎么修改文本"。
参数 说明 示例
-n 静默模式。只打印被命令处理过的行 (通常配合 p 使用) sed -n '5p' file (只打印第5行)
-i 就地修改 (In-place)。直接修改原文件 (慎用!) sed -i 's/old/new/g' file
-e 允许多个编辑命令 sed -e 's/a/b/' -e 's/c/d/' file
s 替换 (Substitute)。语法:s/旧/新/标志 s/root/admin/
d 删除 (Delete) 行 3d (删除第3行)
p 打印 (Print) 行 p
g 全局替换 (Global)。一行中所有匹配项都替换,否则只换第一个 s/old/new/g
经典用例
1. 将文件中的所有的 "foo" 替换为 "bar" (仅输出,不修改文件)
sed 's/foo/bar/g' file.txt
2. 直接修改文件 (备份原文件为 .bak)
sed -i.bak 's/foo/bar/g' file.txt
3. 删除文件中的空行
sed '/^$/d' file.txt
4. 删除第 10 行到第 20 行
sed '10,20d' file.txt
5. 只在包含 "ERROR" 的行中进行替换
sed '/ERROR/ s/warning/critical/g' log.txt
6. 在每一行的末尾添加一个逗号
sed 's/$/,/' file.txt