当前位置: 首页 > article >正文

【linux】文件与目录命令 - sed

文章目录

        • 1. 基本用法
        • 2. 常用参数
        • 3. 用法举例
        • 4. 注意事项

sed 命令是流编辑器(Stream Editor),用于在文本中执行基本的文本替换、删除、插入和查找操作,适合处理大批量文本或文件的自动化修改任务。

1. 基本用法
  • 语法:

    sed [选项] '脚本' 文件
    sed [选项] -e '脚本1' -e '脚本2' 文件
    sed [选项] -f 脚本文件 文件
    
  • 功能:

    • 逐行处理输入文本,按脚本规则执行替换、删除、插入等操作。
  • 此命令是否系统自带:此命令是系统默认自带的,无需额外安装。


2. 常用参数
  • 脚本选项:

    • -e:指定要执行的 sed 脚本,可多次使用。
    • -f:从指定文件加载 sed 脚本。
    • -n:禁止默认输出,仅显示被脚本处理过的行。
  • 文件操作:

    • -i[SUFFIX]:直接修改文件,备份原文件(可选后缀 SUFFIX 用于指定备份扩展名)。
    • --help:显示帮助信息。
    • --version:显示命令版本信息。
  • 脚本命令:

    • s/pattern/replacement/flags
      

      :替换匹配的模式。

      • g:全局替换。
      • p:打印替换后的行。
      • i:忽略大小写匹配。
    • d:删除匹配的行。

    • p:打印匹配的行。

    • a\text:在指定行后追加内容。

    • i\text:在指定行前插入内容。

    • c\text:替换指定行内容。

    • y/source/dest:字符转换(类似 tr 命令)。


3. 用法举例
  • 简单文本替换
    替换文件中首次出现的 helloworld

    sed 's/hello/world/' file.txt
    
  • 全局替换
    替换每行中所有的 hello

    sed 's/hello/world/g' file.txt
    
  • 忽略大小写替换

    sed 's/hello/world/gi' file.txt
    
  • 直接修改文件
    替换后直接保存修改:

    sed -i 's/hello/world/g' file.txt
    
  • 带备份的修改
    替换后保存并备份原文件:

    sed -i.bak 's/hello/world/g' file.txt
    
  • 删除行
    删除包含 hello 的行:

    sed '/hello/d' file.txt
    
  • 插入内容
    在匹配行后插入文本:

    sed '/hello/a\This is a new line' file.txt
    
  • 打印匹配行
    仅输出包含 hello 的行:

    sed -n '/hello/p' file.txt
    
  • 从脚本文件中加载规则

    sed -f script.sed file.txt
    
  • 处理标准输入

    echo "hello world" | sed 's/world/sed/'
    # 输出:hello sed
    

4. 注意事项
  • 默认情况下,sed 会将处理结果输出到标准输出,使用 -i 才会修改原文件。

  • 替换中的特殊字符需要转义,例如 /

    sed 's/foo\/bar/baz/' file.txt
    
  • 脚本命令可配合地址使用,如 2s/hello/world/ 仅替换第 2 行的匹配内容。

  • 使用正则表达式时,默认支持基本正则,扩展正则需结合 -r--regexp-extended

  • 在多平台使用时,注意 GNU sed 和 BSD sed 的行为差异,尤其是 -i 参数的语法:

    • GNU:sed -i 's/a/b/' file
    • BSD:sed -i '' 's/a/b/' file

http://www.kler.cn/a/563727.html

相关文章:

  • 基于Flask框架生产环境快速部署
  • React + TypeScript 数据模型驱动数据字典生成示例
  • word中对插入的图片修改背景色
  • Redisson使用场景及原理
  • HTML第二节
  • centos设置 sh脚本开机自启动
  • 算法系列之回溯算法
  • Redis多线程模型演进
  • Dockerfile 中的 COPY 语句:作用与使用详解
  • 基于Django的手办交易平台~源码
  • 小波变换背景预测matlab和python, pytorch样例
  • Go红队开发—并发编程
  • liunx安装redis并配置主从
  • 【Java项目】基于Spring Boot的考研资讯平台
  • 若依 ruoyi-vue 根据角色切换路由菜单权限 SAAS
  • lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并、行高设置等。
  • https:原理
  • DevOps全流程
  • 【红队利器】单文件一键结束火绒6.0
  • 【Python网络爬虫笔记】14-使用代理绕过访问限制