当前位置:首页>Linux>Linux | sed命令解析

Linux | sed命令解析

  • 2026-10-11 08:11:08
Linux | sed命令解析

点击关注 更多精彩

Linux系统

sed命令解析

   sed(Stream EDitor)是 Linux/Unix 下的流式文本编辑器,核心特点是非交互式逐行处理文本,支持增、删、改、查等操作,默认不修改原文件,结果输出到标准输出,是运维和脚本自动化的高频工具。

一、常用动作指令

二、行号与匹配条件

条件写法及含义

'p'    打印所有行 

'1p'    打印第1行

'2,4p'    打印第2~4行    

'2p;4p'    打印第2行和第4行    

'1~2p'    打印奇数行 

'2~2p'    打印偶数行  

'/root/d'    删除包含root的行    

'/root/!d'    删除不包含root的行    

'$d'    删除最后一行 

'/^$/d'    删除空行    

三、替换操作详解

基本格式

sed 's/old/new/标志' file

分隔符可替换

sed 's#/old/path#/new/path#g' file  

# 适合路径替换

四、插入、追加、替换整行

1.多行文本处理

sed '2cLine1\nLine2' file   # 用\n换行

2. 替换指定行的匹配内容

仅替换第2行的第一个2017为6666

sed '2s/2017/6666/' shu.txt  

替换第3~5行的所有old为new

sed '3,5s/old/new/g' file   

3.修改文件路径时,替换分隔符

当替换内容包含 /(如路径),可改用 |、# 等作为分隔符,避免冲突:

sed 's|/etc/oldpath|/etc/newpath|g' file

五、拓展知识点

  1. 常用选项

2. 多个指令组合

用 -e 执行多个编辑命令:

sed -e 's/old/new/' -e '/error/d' file

用 ; 分隔命令(同条件下的多操作):

sed 's/old/new/; /error/d' file   # 等价写法

3. 使用正则表达式匹配

sed -n '/^[0-9]/p' file       # 打印以数字开头的行

sed '/^$/d' file              # 删除空行

sed '/^#/d' file              # 删除注释行

删除配置文件中注释行和空行:

sed -i '/^#/d;/^$/d' nginx.conf

4. 引用shell变量

old="abc"

new="xyz"

sed "s/$old/$new/g" file   # 使用双引号

5. 写入文件

sed -n '2,4w output.txt' file   # 将2~4行写入output.txt

6. 打印行号

sed -n '=; 2,4p' file   # 先打印行号,再打印2~4行

7. 退出指令

sed '5q' file   # 打印前5行后退出

8.提取日志中特定时间段的内容:

sed -n '/2026-05-08 10:00:00/,/2026-05-08 11:00:00/p' app.log

9.直接使用 -i 会修改原文件,建议先备份:

sed -i.bak 's/old/new/g' file 

# 修改文件,并生成file.bak备份文件

10. 模式空间与保持空间

sed 处理文本的核心是模式空间(Pattern Space)和保持空间(Hold Space),通过 h/H、g/G、x 等命令实现多行数据暂存与交换,常用于复杂文本处理(如跨行匹配、数据暂存)。

六、常见面试/考试题示例

删除所有空行    

sed '/^$/d' file   

删除不含root的行    

sed '/root/!d' file    

将每行第一个数字替换为#    

sed 's/[0-9]/#/' file    

打印第10行    

sed -n '10p' file 

在匹配行后追加内容    

sed '/pattern/a\new line' file  

修改文件并备份    

sed -i.bak 's/old/new/g' file    

给所有以空格/制表符开头的行添加#注释(批量注释配置文件、脚本文件。)

sed -r 's/^[ \t]*/#/' config.txt

  • sed:文本流处理工具,逐行处理文本。

  • -r启用扩展正则表达式,让正则写法更简洁,不用加多余反斜杠。

  • s/原内容/新内容/

    替换命令固定格式:

    s = substitute(替换)

    三个 / 是分隔符

  • ^[ \t]*

    ^    匹配行开头   

    [ \t]    匹配空格 或 制表符(Tab)   

    *    匹配前面内容 0 次或多次   

    合起来意思:匹配一行开头的所有空白(空格 / Tab),哪怕没有空白也能匹配

  • /#/:把前面匹配到的行首空白,替换成 #

  • config.txt:要处理的文件

封面获取地址如下

复制链接到网盘下载

封面壁纸链接:

https://pan.baidu.com/s/1Sh4H6Ka0g2OC4t-oZKAvZA?pwd=yqr8 提取码:yqr8 

✦

 END 

✦

往期4K原图获取方式

点击下面链接进入公众号里底部菜单栏

获取4K原图壁纸链接

(公众号资源库已更新 ~)

公众号:初见别辞

壁纸分享 | 电脑技术 | 头像

点赞

分享

收藏

最新文章

随机文章