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 是文本处理中的瑞士军刀,只需掌握替换、删除、插入、打印等几个常用命令,配合正则表达式即可完成绝大多数文本处理任务。

**建议结合 **grepawkcut 等工具搭配使用,可打造强大的日志分析和自动化处理工具链。