Linux中sed 命令详解:一篇文章搞懂 Linux 文本处理利器
**在日常的 Linux 运维与开发工作中,处理文本文件是不可避免的任务,而 **sed
(Stream Editor)正是一个强大且高效的文本处理工具。本文将系统讲解 sed
的常见用法,并配以丰富实例,助你快速掌握并上手使用。
一、什么是 sed?
sed
是一个流编辑器,用于对文本进行快速处理,可以实现替换、删除、插入、打印等操作,适用于自动化脚本和大规模日志文件处理。
二、基本语法
sed [选项] 'script' 文件名
script
:是 sed 的处理命令,例如:s/foo/bar/g
文件名
:要处理的文件(如果没有,默认从标准输入读取)
三、常用命令详解与实例
1. 替换(substitute)
语法:
sed 's/原字符串/新字符串/修饰符' 文件
示例:
#只替换每行的第一个 `hello` 为 `world`
sed 's/hello/world/' file.txt
#替换每行所有的 `hello`
sed 's/hello/world/g' file.txt
2. 删除(delete)
删除包含某关键字的行:
sed '/ERROR/d' file.log
删除指定行:
sed '2d' file.txt # 删除第2行
sed '2,5d' file.txt # 删除第2到第5行
3. 插入与追加
sed '2i\This is inserted line' file.txt # 在第2行之前插入一行
sed '3a\This is appended line' file.txt # 在第3行之后追加一行
4. 只显示匹配的行(print)
sed -n '/pattern/p' file.txt
5. 多点替换/删除/操作组合
sed -e 's/old1/new1/g' -e 's/old2/new2/g' file.txt
6. 源文件修改更新(-i)
sed -i 's/foo/bar/g' file.txt
sed -i.bak 's/foo/bar/g' file.txt # 备份原文件为 file.txt.bak
四、进阶技巧
1. 匹配并只删除关键字
sed 's/remove//g' file.txt
2. 使用变量
key="ERROR"
sed "/$key/d" file.log
3. 删除空行
sed '/^$/d' file.txt
五、结合管道与标准输入
#替换文字并输出
echo "hello world" | sed 's/world/shell/'
#查看404包含的所有行
cat access.log | sed -n '/404/p'
六、总结
sed
是文本处理中的瑞士军刀,只需掌握替换、删除、插入、打印等几个常用命令,配合正则表达式即可完成绝大多数文本处理任务。
**建议结合 **grep
、awk
、cut
等工具搭配使用,可打造强大的日志分析和自动化处理工具链。