侧边栏壁纸
博主头像
Setyg的博客

当秋风染红落叶的时候,就是新生~

  • 累计撰写 86 篇文章
  • 累计创建 66 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux 中使用 sed 命令使用实践

Setyg
2026-10-04 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

Linux 中使用 sed 命令使用实践

概述

sed (stream editor) 是 Linux 系统中最强大的文本处理工具之一,用于对文件或标准输入进行流式编辑。它支持正则表达式,可以完成查找、替换、删除、插入等复杂操作,是系统管理员和开发者日常工作中不可或缺的利器。

基本语法

sed [options] 'command' file

或管道使用:

cat file | sed 'command'

常用选项

选项

说明

-i

直接修改原文件(慎用)

-n

只打印被命令处理的行

-e

指定多个命令

-f scriptfile

从脚本文件读取命令

-r

使用扩展正则表达式

核心命令

命令

说明

s/pattern/replacement/flags

替换匹配的模式

d

删除匹配的行

i\ text

在匹配行前插入文本

a\ text

在匹配行后追加文本

c\ text

将匹配行替换为新文本

p

打印匹配的行

实用示例与 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 都是提升工作效率的绝佳工具。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区