一篇文章教会你使用Linux的‘sed‘基础命令

Linux `sed` 命令详解

  • Linux `sed` 命令详解
    • 1、基本语法
    • 2、常用命令
      • 2.1 替换
      • 2.2 删除行
      • 2.3 查找并打印行
      • 2.4 插入与追加
      • 2.5 多命令组合
    • 3、高级用法
      • 3.1 替换并保存结果到新文件
      • 3.2 在范围内替换
      • 3.3 正则表达式匹配
    • 4、小结

Linux sed 命令详解

  sed 是 Linux 系统中非常强大的流编辑器,可对文件或文本流进行查找、替换、插入和删除等操作。


1、基本语法

sed [选项] '命令' 文件名

其中:

  • 选项
    • -e:直接在命令行模式下运行 sed 脚本。
    • -i:对文件内容进行原地修改(在文件中直接替换)。
    • -n:安静模式(默认输出已匹配的行,可以结合 p 命令使用)。
    • -f:从指定的脚本文件中读取 sed 命令。
  • 命令sed 中的命令用于执行查找、替换、插入和删除等操作。

2、常用命令

2.1 替换

语法

sed 's/原字符串/新字符串/标志' 文件名
  • s:表示替换操作。
  • 标志:常用的标志是 g,表示全局替换。

示例

# 将文件 test.txt 中的 "hello" 替换为 "hi"
sed 's/hello/hi/' test.txt# 将文件 test.txt 中的所有 "hello" 替换为 "hi"(全局替换)
sed 's/hello/hi/g' test.txt# 使用 -i 选项直接修改文件内容
sed -i 's/hello/hi/g' test.txt

运行结果
在这里插入图片描述

2.2 删除行

语法

sed '行号d' 文件名
  • d:表示删除操作。

示例

# 删除 test.txt 文件中的第 2 行
sed '2d' test.txt# 删除第 2 到第 4 行
sed '2,4d' test.txt

运行结果
在这里插入图片描述

2.3 查找并打印行

语法

sed -n '/模式/p' 文件名
  • -n:安静模式,只输出匹配的行。
  • /模式/:匹配的模式。
  • p:表示打印操作。

示例

# 打印文件test.txt 中包含 "hello" 的行
sed -n '/hello/p' test.txt

运行结果
在这里插入图片描述

2.4 插入与追加

语法

sed '行号i\内容' 文件名    # 插入
sed '行号a\内容' 文件名    # 追加
  • i:在指定行前插入内容。
  • a:在指定行后追加内容。

示例

# 在第 2 行前插入 "This is an inserted line."
sed '2i\This is an inserted line.' test.txt# 在第 2 行后追加 "This is an appended line."
sed '2a\This is an appended line.' test.txt

运行结果
在这里插入图片描述

2.5 多命令组合

使用 -e 选项,或者用 ; 分隔命令,可以一次执行多个 sed 命令。

示例

# 在 test.txt 中,先替换 "hello" 为 "hi",然后删除第 3 行
sed -e 's/hello/hi/g' -e '3d' test.txt

运行结果
在这里插入图片描述


3、高级用法

3.1 替换并保存结果到新文件

可以将结果重定向到新文件,而不更改原文件内容。

# 将hello替换为hi并将替换后的结果输出到new_test.txt
sed 's/hello/hi/g' test.txt > new_test.txt

运行结果
在这里插入图片描述

3.2 在范围内替换

可以指定行范围,仅对特定行范围内的内容进行替换。

示例

# 只在第 2 到第 4 行内将 "hello" 替换为 "hi"
sed '2,4s/hello/hi/g' test.txt

运行结果
在这里插入图片描述

3.3 正则表达式匹配

sed 可以使用正则表达式匹配字符串,例如查找包含特定模式的行。

示例

# 将所有以 "test" 开头的行的 "test" 替换为 "exam"
sed '/^hello/s/hello/hi/' test.txt

在这里插入图片描述


4、小结

  • sed 非常适合处理大量数据的批量修改。
  • 使用 -i 选项时要小心,因为它会直接修改文件内容。
  • 本文只介绍了一些基本的用法,更多高级用法还需要大家自行组合摸索。

只有互相学习,才能获得更大的进步!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集群化消息服务解决方案

目录 集群化消息服务解决方案项目概述架构图使用说明服务端通过API接口推送消息给客户端调用方式 请求参数返回参数 客户端推送消息连接websocket或发送消息 接收消息项目地址作者信息 集群化消息服务解决方案 项目概述 集群化消息服务解决方案是一种用于处理大量消息的高可用…

elementUI 点击弹出时间 date-picker

elementUI的日期组件,有完整的UI样式及弹窗,但是我的页面不要它的UI样式,点击的时候却要弹出类似的日期选择器,那怎么办呢? 以下是elementUI自带的UI风格,一定要一个输入框来触发。 这是我的项目中要用到的…

【go从零单排】go中的三种数据类型array、slices、maps

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 array数组 package mainimport "fmt"func main() {var a [5]int //var关键字定义数组,[5]表…

科技改变阅读习惯:最新研究揭示电子阅读器的普及趋势

据QYResearch调研团队最新报告“全球电子阅读器市场报告2023-2029”显示,预计2029年全球电子阅读器市场规模将达到6.9亿美元,未来几年年复合增长率CAGR为0.4%。 如上图表/数据,摘自QYResearch最新报告“全球电子阅读器市场研究报告2023-2029.…

解决 VSCode 中 C/C++ 编码乱码问题的两种方法

解决 VSCode 中 C/C 编码乱码问题的两种方法 在中国地区,Windows 系统中的 cmd 和 PowerShell 默认编码是 GBK,但 VSCode 默认使用 UTF-8 编码。这种编码不一致会导致在 VSCode 终端中运行 C/C 程序时出现乱码。以下介绍两种方法来解决这一问题。 方法…

UE5遇到问题记录

问题描述: 在让敌人自动追踪玩家的时候一开始运行就会播放攻击的动画 解决方法: 这样是因为敌人一开始就检测到自己了,所以触发动画。 方式一:加一个条件 方式二:改一下碰撞预设

内网对抗-信息收集篇SPN扫描DC定位角色区域定性服务探针安全防护凭据获取

知识点: 1、信息收集篇-网络架构-出网&角色&服务&成员 2、信息收集篇-安全防护-杀毒&防火墙&流量监控 3、信息收集篇-密码凭据-系统&工具&网站&网络域渗透的信息收集: 在攻防演练中,当完成边界突破后进入内…

基于Matlab 疲劳驾驶检测

Matlab 疲劳驾驶检测 课题介绍 该课题为基于眼部和嘴部的疲劳驾驶检测。带有一个人机交互界面GUI,通过输入视频,分帧,定位眼睛和嘴巴,通过眼睛和嘴巴的张合度,来判别是否疲劳。 二、操作步骤 第一步:最…

11.11 代码块

一 java 1.代码块 1) 理解 使用构造器时:先默认 调用代码块内容 再调用 构造器内容【代码块 > 构造器】 1.1 细节 1)静态代码块 只能加载一次 2)先调用父类代码块 再子类代码块 3)静态代码块是随着类加载而执行…

在gitlab,把新分支替换成master分支

1、备份master分支,可以打tag 2、删除master分支 正常情况下,master分支不允许删除,需要做两个操作才能删除 a、变更项目默认分支为非master分支,可以先随便选择 b、取消master为非保护分支 操作了上述两步,就可以删…

在使用element中的抽屉<el-drawer>页签<el-tabs/>组合时,echarts图表宽度显示异常问题

类似这种情况,宽度异常 原因:在展示出抽屉时,图表的组件一件初始化了,导致他的宽度提前设定好了(我默认的style"width: 100%; height: 300px;"),我得解决方法有2个: 1、第…

《大模型应用开发极简入门》笔记

推荐序 可略过不看。 初识GPT-4和ChatGPT LLM概述 NLP的目标是让计算机能够处理自然语言文本,涉及诸多任务: 文本分类:将输入文本归为预定义的类别。自动翻译:将文本从一种语言自动翻译成另一种语言,包括程序语言。…

Unicode字符集(万国码)

1.三种编码方式: UTF-16:16个bit位(2个字节)存储 UTF-32:32个bit位(4个字节)存储 UTF-8:可变长度字符编码。1-4个字节存储,只需记住:英文字母1个字节表示&…

支持 Win10 的网络环境模拟(丢包,延迟,带宽)

升级 Windows 10 以后,原来各种网络模拟软件都挂掉了,目前能用的就是只有 clumsy: 唯一问题是不支持模拟带宽,那么平时要模拟一些糟糕的网络情况的话,是不太方便的,而开虚拟机用 Linux tc 或者设置个远程 l…

【Homework】【5】Learning resources for DQ Robotics in MATLAB

Lesson 5 代码-TwoDofPlanarRobot.m 表示一个 2 自由度平面机器人。该类包含构造函数、计算正向运动学模型的函数、计算平移雅可比矩阵的函数,以及在二维空间中绘制机器人的函数。 classdef TwoDofPlanarRobot%TwoDofPlanarRobot - 表示一个 2 自由度平面机器人类…

在模方置平建筑失败的原因是什么?

在模方置平建筑失败的原因是什么? 可能是obj拓扑不连续,可以在网格大师使用osgb转obj功能,选择拓扑或者重建。 网格大师是一款能够解决实景三维模型空间参考、原点、瓦块大小不统一,重叠区域处理问题的工具“百宝箱”&#xff0c…

【大咖云集 | IEEE计算智能学会广州分会支持】第四届信息技术与当代体育国际学术会议(TCS 2024,12月13-15日)

第四届信息技术与当代体育国际学术会议(TCS 2024) 2024 4th International Conference on Information Technology and Contemporary Sports 重要信息 会议官网:www.icitcs.net(会议关键词:TCS 2024) 202…

常用机器人算法原理介绍

一、引言 随着科技的不断发展,机器人技术在各个领域得到了广泛应用。机器人算法是机器人实现各种功能的核心,它决定了机器人的行为和性能。本文将介绍几种常用的机器人算法原理,包括路径规划算法、定位算法和运动控制算法。 二、路径规划算法…

Cynet:全方位一体化安全防护工具

前言 1999年,布鲁斯施奈尔曾说过:“复杂性是安全最大的敌人。”彼时还是19年前,而现在,网络安全已然变得更加繁杂。 近日我在网上冲浪过程中发现了这么一个平台性质的软件,看似具有相当强的防护能力。 根据Cynet的描…

dolphin 配置data 从文件导入hive 实践(一)

datax 支持多种数据源的相互读写,作为开源软件,提供了离线采集功能,方便系统开发,过程中遇到诸多配置,需要开发者自己探索,免费同样有成本 配置模板 {"setting": {},"job": {"s…