`sed` 命令完整指南教程

简介: 【8月更文挑战第20天】

sed 是 Unix 和类 Unix 操作系统中一种强大的流编辑器(stream editor),用于处理和转换文本。它可以逐行处理输入流或文件中的文本数据,进行插入、删除、替换和其他复杂的文本操作。本文将详细介绍 sed 命令的基本用法、常见操作以及一些高级功能,帮助用户深入理解并有效使用 sed

一、sed 命令基本用法

sed 命令的基本语法如下:

sed [选项] '脚本' [文件...]
  • 选项:用于控制 sed 的行为。例如,-n 选项可以关闭默认的输出。
  • 脚本:定义了对文本进行的操作。脚本通常包含一个或多个 sed 命令。
  • 文件:指定要处理的输入文件。如果没有指定文件,sed 会从标准输入读取数据。

二、基本操作

  1. 打印行(p 命令)

    sed 默认会打印每一行。要只打印特定行,可以使用 p 命令。例如,要打印文件的第 2 行:

    sed -n '2p' 文件名
    

    这里 -n 选项告诉 sed 只输出符合条件的行,2p 表示打印第 2 行。

  2. 删除行(d 命令)

    使用 d 命令删除特定行。例如,删除文件的第 3 行:

    sed '3d' 文件名
    

    如果要删除从第 2 行到第 4 行的内容,可以使用:

    sed '2,4d' 文件名
    
  3. 替换文本(s 命令)

    s 命令用于替换文本。基本语法为:

    sed 's/模式/替换文本/' 文件名
    

    例如,将文件中的第一个 apple 替换为 orange

    sed 's/apple/orange/' 文件名
    

    如果要替换每一行中所有的 apple,可以添加 g 标志:

    sed 's/apple/orange/g' 文件名
    
  4. 替换多行

    通过 -e 选项可以在一个命令中执行多个 sed 脚本。例如:

    sed -e 's/apple/orange/g' -e 's/banana/grape/g' 文件名
    

    这条命令将文件中的 apple 替换为 orange,将 banana 替换为 grape

  5. 插入和追加文本

    • 插入(i 命令):在匹配行的前面插入文本。例如,在第 2 行前插入 Hello World

      sed '2i\Hello World' 文件名
      
    • 追加(a 命令):在匹配行的后面追加文本。例如,在第 2 行后追加 Goodbye World

      sed '2a\Goodbye World' 文件名
      

三、高级用法

  1. 正则表达式

    sed 支持使用正则表达式进行复杂的模式匹配。常见的正则表达式功能包括:

    • .:匹配任何单个字符。
    • *:匹配零个或多个前面的字符。
    • ^:匹配行的开始。
    • $:匹配行的结束。

    例如,将以 start 开头的行替换为 begin

    sed 's/^start/begin/' 文件名
    
  2. 使用多个脚本文件

    可以将多个 sed 命令写入一个脚本文件,并使用 -f 选项执行。例如,创建一个 script.sed 文件:

    s/apple/orange/g
    s/banana/grape/g
    

    然后用以下命令执行:

    sed -f script.sed 文件名
    
  3. 范围操作

    sed 允许对特定范围内的行进行操作。例如,将第 2 行到第 4 行之间的 apple 替换为 orange

    sed '2,4s/apple/orange/g' 文件名
    
  4. 使用分隔符

    默认情况下,sed 使用 / 作为分隔符。可以使用其他字符作为分隔符,以便处理包含 / 的文本。例如,使用 | 作为分隔符:

    sed 's|/path/to/old|/path/to/new|g' 文件名
    
  5. 扩展正则表达式

    使用 -E 选项启用扩展正则表达式,以支持更多的正则表达式功能。例如,匹配 applebanana

    sed -E 's/(apple|banana)/fruit/g' 文件名
    

四、脚本示例

  1. 删除空行

    删除文件中的所有空行:

    sed '/^$/d' 文件名
    
  2. 替换特定行中的文本

    将第 3 行中的 foo 替换为 bar

    sed '3s/foo/bar/' 文件名
    
  3. 打印特定范围的行

    打印从第 5 行到第 10 行的内容:

    sed -n '5,10p' 文件名
    
  4. 对匹配模式的行进行操作

    将所有包含 error 的行替换为 FIXED

    sed '/error/s/.*/FIXED/' 文件名
    

五、总结

sed 是一个功能强大的流编辑器,适用于各种文本处理任务。通过掌握 sed 的基本用法、常见操作和高级功能,用户可以高效地处理和转换文本数据。在实际应用中,sed 的灵活性和强大功能使其成为 Unix 和类 Unix 环境中不可或缺的工具。

目录
相关文章
|
运维 Linux Shell
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
273666 0
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
5779 56
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
Kubernetes 应用服务中间件 nginx
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)(上)
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)
53382 30
|
机器学习/深度学习 数据采集 数据处理
Pipeline基础语法
Pipeline是处理数据流和构建机器学习模型的重要工具,它能够简化代码、提高可读性并减少错误。通过本篇文章,读者应能掌握Pipeline的基本语法、使用方法及其在数据科学中的重要性。正确使用Pipeline将极大地提高机器学习项目的效率与可靠性。希望本文能为您的数据处理工作提供实用的指导和帮助。
1377 9
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
8067 6
|
监控 安全 网络安全
如何让我们的VPS更安全?12个VPS安全防护技巧
在线安全对个人和企业至关重要。通过加强VPS托管安全性,可有效防范网络攻击。本文介绍了12个提升VPS安全的技巧,如使用强密码、更改SSH端口、启用防火墙、定期更新系统、数据备份、使用VPN、限制用户访问等。同时,在选择VPS托管提供商时,应关注免费SSL证书、24/7客户支持、数据备份选项、CDN支持及网络监控等功能。采取这些措施有助于保护业务免受黑客攻击,确保数据安全与业务稳定运行。
754 0
ELK 圣经:Elasticsearch、Logstash、Kibana 从入门到精通
ELK是一套强大的日志管理和分析工具,广泛应用于日志监控、故障排查、业务分析等场景。本文档将详细介绍ELK的各个组件及其配置方法,帮助读者从零开始掌握ELK的使用。
|
存储 缓存 数据处理
sed指令用法详解
sed指令用法详解
1004 0