Linux 中使用 sed 命令使用实践
概述
sed (stream editor) 是 Linux 系统中最强大的文本处理工具之一,用于对文件或标准输入进行流式编辑。它支持正则表达式,可以完成查找、替换、删除、插入等复杂操作,是系统管理员和开发者日常工作中不可或缺的利器。
基本语法
sed [options] 'command' file
或管道使用:
cat file | sed 'command'
常用选项
核心命令
实用示例与 Demo
1. 替换文件中的字符串
将文件中所有 "oldtext" 替换为 "newtext":
sed 's/oldtext/newtext/g' file.txt
使用 -i 选项直接修改原文件:
sed -i 's/oldtext/newtext/g' file.txt
2. 删除包含特定关键词的行
删除文件中所有包含 "error" 的行:
sed '/error/d' file.txt
3. 在特定行前插入文本
在第 5 行前插入 "This is a new line":
sed '5i\\nThis is a new line' file.txt
4. 在特定行后追加文本
在第 10 行后追加 "Additional content here":
sed '10a\\nAdditional content here' file.txt
5. 使用正则表达式替换
将所有以 "http://" 或 "https://" 开头的网址替换为 "[URL]":
sed -E 's|https?://[^ ]+|[URL]|g' file.txt
6. 批量替换多文件
在当前目录下所有 .txt 文件中将 "old" 替换为 "new":
find . -name "*.txt" -exec sed -i 's/old/new/g' {} \
7. 查看并打印匹配的行
只显示包含 "warning" 的行:
sed -n '/warning/p' file.txt
8. 处理配置文件
修改配置文件中的端口设置:
sed -i 's/Port 22/Port 2222/g' /etc/ssh/sshd_config
9. 清理日志文件
删除日志文件中所有空行:
sed '/^$/d' logfile.log
10. 复杂替换:提取信息
从日志中提取所有错误代码:
sed -n 's/.*ERROR \([0-9]\{4\}\).*/\1/p' error.log
注意事项
使用
-i选项时要格外小心,会直接修改原文件,建议先备份。正则表达式中特殊字符需转义,如
.、*、^、$。复杂命令建议写入脚本文件,便于复用和维护。
总结
sed 命令功能强大,通过掌握 s/// 替换、d 删除、i\ 插入、a\ 追加等核心操作,结合正则表达式,可以高效地完成各种文本处理任务。无论是日志分析、配置文件修改还是批量文本处理,sed 都是提升工作效率的绝佳工具。
评论区