sed(1):强大的文本处理命令

一、命令简介

sed​(stream editor)是一个强大的文本处理工具,它能够执行基本的文本转换,如替换、删除、插入和修改文本行的特定部分。sed​ 命令通常用于对文本文件进行批量编辑,也可以用于处理来自管道的输入。

特点

  • 支持正则
  • 批量处理
  • 非交互式
  • 每行处理

标签: 文本处理, shell 编程

获取帮助:sed --help

视频教程

Shell 其实很简单(33)sed 的基本使用_哔哩哔哩_bilibili

sandbox="allow-top-navigation-by-user-activation allow-same-origin allow-forms allow-scripts allow-popups" src="https://player.bilibili.com/player.html?bvid=BV1Zf421U7kR&page=1&high_quality=1&as_wide=1&allowfullscreen=true&autoplay=0&t=0.8" data-src="" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="height: 360px; width: 640px;"/>

sed ​的用法比较多样(复杂),通过视频演示更容易理解,同时也需要动手练习,最后通过笔记总结。

二、命令参数

sed [选项] 匹配模式 文件

常用选项

  • -e​ 或 --expression​:添加一个编辑命令到脚本。
  • -f​ 或 --file​:从文件中读取编辑脚本。
  • -n​ 或 --quiet​ 或 --silent​:抑制自动打印。
  • -i​ 或 --in-place​:⚠️直接修改文件,而不是输出到标准输出。必须谨慎使用。
  • -r​ 或 --regexp-extended​:使用扩展的正则表达式。
  • --help​:查看帮助文档

匹配模式

  • s/regexp/replacement/​:替换匹配到的字符串。
  • d​:删除匹配到的行。
  • p​:打印匹配到的行。
  • a \text​:在匹配到的行后面添加文本。
  • i \text​:在匹配到的行前面插入文本。
  • c \text​:替换匹配到的行为指定的文本。

三、命令示例

  1. sed '/模式/命令' 文件​ 模式:处理整行

    # 删除:删除井号开头的行
    sed '/^#/d' txt# 删除不匹配的行:删除不是井号开头的行
    sed '/^#/!d' txt# 多命令:删除井号开头的行,删除空行
    sed '/^#/d; /^$/d' txt# 追加:在匹配的行后面插入一行内容
    sed '/^#/a #上一行是注释,这一行也是注释' txt# 插入:在匹配的行前面插入一行内容
    sed '/^#/i #下一行是注释,这一行也是注释' txt# 替换行:替换掉匹配行的内容
    sed '/^#/c #这是一条重新编辑后的注释' txt# 导入文件:匹配行写入指定文件
    sed '/^#/w txt2' txt# 在每个匹配到的行前插入(一行来写)行号
    # 鸡肋,可能不是你预期的样子:行首插入行号
    sed '/^#/=' txt# 删除单行
    sed '3d' txt
    # 删除多行(第3到第5行)
    sed '3,5d' txt# 将text文件的内容插入到txt文件的第二行
    sed '2r text' txt# 打印匹配行
    sed -n '/^[^#]/p' txt
    

    以上操作不会修改你的源文件,它只会把结果输出在终端上。

  2. s/查找/替换/​ 模式:处理行中的匹配字串

    # 替换每行第一个匹配字符串
    sed 's/hello/world/' txt# 全局替换
    sed 's/hello/world/g' txt# 仅显示替换后的行
    sed -n 's/hello/world/gp' txt# 引用模式 &:匹配的字符串
    sed -n 's/world/&!/gp' txt# 自定义分隔符
    sed -n 's#hello#Hello#gp' txt# 基础正则表达式
    sed 's/[0-9]\+/x/g' txt
    # 拓展正则表达式 减少转义
    sed -r 's/[0-9]+/x/g' txt
    

    以上操作不会修改你的源文件,它只会把结果输出在终端上。

  3. ⚠️谨慎使用 -i​ 选项: 因为它真的会修改你的源文件。

    # 替换:hello被替换为world
    sed -i 's/hello/world/g' txt
    

输出示例

image

注意事项:

  • 原地编辑:使用 -i​ 选项进行原地编辑时,建议先备份文件,以防意外修改。
  • 正则表达式sed​ 默认使用基础正则表达式,若需要使用扩展正则表达式,可以添加 -r​ 选项。
  • 文件处理sed​ 是一行一行处理文本的,对于大文件可能效率较低。
  • 语法注意sed​ 的语法和操作符可能会因不同版本而略有差异,需注意兼容性。
  • 熟练掌握 sed​ 命令可以提高文本处理效率,但在操作时应注意备份重要文件,避免意外修改。

sed​ 是一个非常灵活的工具,能够执行复杂的文本处理任务。掌握 sed​ 可以大大提高在命令行环境中处理文本的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150441.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

煤矿井下钻场目标检测数据集 5类 voc格式

煤矿井下钻场目标检测数据集 本数据集包含了来自不同钻场和环境背景条件下的70948张图片,涵盖了夹持器、钻机卡盘、煤矿工人、矿井安全帽和钻杆等五类目标,并提供了PASCAL VOC格式的标注文件。 摘要 煤矿井下钻场打钻是解决瓦斯灾害、水害、隐蔽地质灾害…

9.24-k8s服务发布

Ingress 使用域名发布 K8S 服务 部署项目 一、先部署mariadb [rootk8s-master ~]# mkdir aaa [rootk8s-master ~]# cd aaa/ [rootk8s-master aaa]# # 先部署mariadb [rootk8s-master aaa]# # configmap [rootk8s-master aaa]# vim mariadb-configmap.yaml apiVersion: v1 ki…

灵当CRM multipleUpload.php 文件上传致RCE漏洞复现

0x01 产品描述: 灵当CRM是一款专为中小企业量身定制的智能客户关系管理工具,由上海灵当信息科技有限公司开发和运营。该系统广泛应用于多个行业,包括金融、教育、医疗、IT服务及房地产等领域,旨在满足企业对客户个性化管理的需求&…

使用yum为centos系统安装软件以及使用(包含阿里云yum源配置)

centos系统配置阿里云yum源 因为centos7官方停止维护,自带yum源用不了了,所以可以更换成阿里云yum源 方法: 使用root权限执行以下语句 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo CentOS…

【LinuxC高级】汇总

ls ls -l:显示文件的详细信息 ls -a:显示隐藏文件 ls -lh:文件大小单位显示 ls -i:显示文件的inode号 修改密码 passwd 用户名 su 用户名 -----> 用户名 su ----> 如果不加用户名,默认切换到超级用户 cd cd 路径…

YOLOv10改进,YOLOv10主干网络替换为VanillaNet( CVPR 2023 华为提出的全新轻量化架构),大幅度涨点

摘要 基础模型的核心理念是“更多即不同”,这一理念在计算机视觉和自然语言处理领域取得了惊人的成功。然而,变压器模型的优化挑战和固有复杂性呼唤一种向简化转变的范式。在本研究中,引入了 VanillaNet,一种拥抱设计优雅的神经网络架构。通过避免高深度、快捷方式和复杂操…

MySQL—存储过程详解

基本介绍 存储过程和函数是数据库中预先编译并存储的一组SQL语句集合。它们的主要目的是提高代码的复用性、减少数据传输、简化业务逻辑处理,并且一旦编译成功,可以永久有效。 存储过程和函数的好处 提高代码的复用性:存储过程和函数可以在…

记某地级市护网的攻防演练行动

0x1 前言 哈喽,师傅们! 这次给师傅们分享的是上上个星期的地级市护网的攻防演练的两个案例,涉及到的知识点可能比较偏,下面我也会提前给师傅们拓展下改漏洞相关的知识点内容。护网攻防演练中,涉及到的很多敏感内容这…

【Linux】驱动的基本架构和编译

驱动源码 /** Silicon Integrated Co., Ltd haptic sih688x haptic driver file** Copyright (c) 2021 kugua <daokuan.zhusi-in.com>** This program is free software; you can redistribute it and/or modify it* under the terms of the GNU General Public Licen…

css实现自定义静态进度条-vue2

实现如图所示 html&#xff1a; <div class"progress-container"><div class"progress-box left" :style"leftStyle"><div class"progress-value-top left">总中标电量</div><div class"progress-val…

前端请求音频返回pcm流进行播放

业务场景是chat回答&#xff0c;点击播放则会将回答内容进行请求&#xff0c;返回音频数据流进行播放 实现方案&#xff0c;因为后端返回的是流式接口&#xff0c;但是流式接口我去截取后用自己完成的流式播放器方法进行播放会存在杂音&#xff0c;但是短句接口返回速度尚可&a…

composer环境变量(phpstudy集成环境)无法使用问题

composer 不是内部或外部命令,也不是可运行的程序 或批处理文件。 按下WinR组合键打开“运行”&#xff0c;输入sysdm.cpl 回车&#xff0c;打开“系统属性”并切换至“高级”选项卡&#xff0c;点击“环境变量”进行配置 配置完后点击确定&#xff0c;重新打开命令行&#x…

Bootstrap框架-container类,container-fluid类,栅格系统

1.Bootstrap Bootstrap为页面内容和栅格系统包裹了一个.container容器&#xff0c;框架预先定义类 1.1container类 响应式布局容器的宽度 手机-小于768px 宽度设置100%&#xff1b; 平板-大于等于768px 设置宽度为750px 桌面显示器-大于等于992px 设置宽度 970px 大屏幕显…

康养为松,智能为鹤:华为全屋智能画出的松鹤长春图

在道家文化中&#xff0c;喜欢将松与鹤并举&#xff0c;以其长寿与仙逸表达对老年人的美好祝愿。松鹤延年、松龄鹤寿等成语皆出于此。松鹤长春图&#xff0c;也成为国画当中的经久不衰的题材。 当我们迎来老龄化时代&#xff0c;“松鹤长春”则成为了整个社会的共同期待。 根据…

【初阶数据结构】排序——插入排序

目录 前言直接插入排序希尔排序 前言 排序&#xff1a;所谓排序就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。排序算法&#xff0c;就是如何使得记录按照要求排列的方法。   例如&#xff1a;买东西时会根据销量或价…

java并发编程笔记 之 线程和进程

文章目录 前言线程线程优先级和时间片创建多线程及运行线程的状态 进程查看进程的命令进程的通信方式 线程和进程的区别从关系上疑问集锦 前言 并发 1、并发是指在同一时间段内&#xff0c;计算机系统能够处理多个任务的能力。 2、在并发编程中&#xff0c;我们可以理解为多个…

代码随想录算法训练营第三十九天 | 198.打家劫舍 ,213.打家劫舍II,337.打家劫舍III

第三十九天打卡&#xff0c;今天解决打家劫舍系列问题&#xff0c;树形dp比较难。 198.打家劫舍 题目链接 解题过程 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 要么不偷这一间&#xff0c;那就是前面那间…

毕业设计选题:基于ssm+vue+uniapp的校园失物招领小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

大瓜-CSP-J/S2024第一轮认证题目涉嫌泄露。竞赛公平能否维护?

2024年全国信息学奥赛&#xff08;CSP-J/S&#xff09;泄题事件在竞赛界掀起了巨大的波澜。这场赛事本应是全国最具公信力的编程竞赛之一&#xff0c;但部分题目在考试前已被某些培训机构押中&#xff0c;这一泄题行为不仅让考生与家长感到愤怒&#xff0c;也让公众对奥赛的公平…

scp 命令:在两台主机间远程传输文件

一、命令简介 ​scp​ 命令使用 SSH ​加密的方式在本地主机和远程主机之间复制文件。 ‍ 二、命令参数 格式 scp [选项] 发送方主机和目录 接收方主机和目录注意&#xff1a;左边是发送方&#xff0c;右边是接收方。固定格式。 示例 #示例1 scp ~/test.txt soulio172.1…