shell中sed命令用法
一、sed命令解析
1、sed工具概述
Stream EDitor,流式编辑器
- 非交互,基于模式匹配过滤及修改文本
- 逐行处理,并将结果输出到屏幕
- 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等操作
2、命令格式解析
主要用法:
- 格式1:前置命令 | sed [选项] ‘编辑指令’
- 格式2:sed [选项] ‘编辑指令’ 文件 … …
条件,可以是行号或 /正则/:
- 行号可以使用单个数字表示单行
- 或者3,5表示连续的多行
- 省略条件,则默认逐行处理全部文本
- 匹配正则时,需要使用//
常见命令选项:
| 选项 | 释义 |
|---|---|
| -n | 屏蔽默认输出 |
| -i | 直接修改源文件 |
| -r | 支持扩展正则 |
二、常见处理操作示例
1、输出文本§
sed -n '/^123/p' file.txt #仅列出123开头的行
sed -n '4p' file.txt #输出第4行
sed -n '2,4p' file.txt #输出第2-4行
sed -n 'p' file.txt #输出全部
sed -n '/ab/p' file.txt #输出包含root的行
sed -n '$=' file.txt #输出文件的行数
sed -n '1~2p' file.txt #打印奇数行
sed -n '2~2p' file.txt #打印偶数行
2、删除文本(d)
sed '2,4d' file.txt #删除第2-4行
sed '/ab/d' file.txt #删除所有包含ab的行
sed '/ab/!d' file.txt #删除不包含ab的行,!符号表示取反
sed '/^file/d' file.txt #删除开头为file的行
sed '$d' file.txt #删除文件的最后一行
sed '/^$/d' file.txt #删除所有空行
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
3、替换关键词(s)
sed 's/ab/AB/' file.txt #将每行中第一个ab替换为AB
sed 's/123/456/2' file.txt #将每行中第二个123替换为456
sed 's/123/XXX/g' file.txt #将所有的123替换为XXX
sed 's/123//g' file.txt #将所有的123都删除(替换成空字符串)
sed '6,8s/^/#/' file.txt #为6-8行加注释
sed 's/^#\*/\*/' file.txt #去掉开头为#*的#号
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
4、替换行(c)
sed 'c 123456' file.txt #将所有行内容替换为123456
sed '/IPADDR/c IPADDR=10.0.0.0' file.txt #筛选IPADDR关键字的行,替换
sed '/#/c fileroot' file.txt #替换包含#号的行替换
sed '3c xxxxx' file.txt #替换第三行内容
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
三、sed文本块处理
1、文本块处理动作
| 操作符 | 用途 | 指令示例 |
|---|---|---|
| i | 行前插入文本 | 2iYY 在第2行之前添加文本行“YY” 4,7iYY 在第4-7行的每一行前添加文本行 |
| a | 行后插入文本 | 2aYY 在第2行之后添加文本 /^XX/aYY 在以XX开头的行之后添加文本 |
| r | 导入指令 | 2cYY 将第2行的内容修改为"YY" |
| w | 文件另存为|导出文件内容 |
2、行前插入(i)
sed '2i ######' test.txt #在第2行前插入单行文本
sed '/aaa/i abc' test.txt #在包含aaa的行前插入单行文本
sed '/aaa/i abc\n###' test.txt #在包含aaa的行前插入2行文本,多行需要加换行符\n
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
3、行后追加(a)
sed '2a ######' test.txt #在第2行后追加单行文本
sed '/aaa/a abc' test.txt #在包含aaa的行后追加单行文本
sed '/aaa/a abc\n###' test.txt #在包含aaa的行后追加2行文本,多行需要加换行符\n
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
4、导入(r)
sed '2r /root/file.txt' test.txt #在第二行之后导入file.txt文本到test.txt文件
sed 'r /root/file.txt' test.txt #在每一行后导入file.txt文本到test.txt文件
sed '/AAA/r /root/file.txt' test.txt #在包含AAA的行后导入file.txt文本到test.txt文件
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
5、导出(w)
sed 'w copy_test.txt' test.txt #将test文件所有内容另存为一个新文件
sed '/AAA/w AAA_test.txt' test.txt #将test文件中包含AAA的行另存为新的文件
sed '2,3w line.txt' test.txt #将test文件的2-3行另存为新的文件
相关文章:
shell中sed命令用法
一、sed命令解析 1、sed工具概述 Stream EDitor,流式编辑器 - 非交互,基于模式匹配过滤及修改文本 - 逐行处理,并将结果输出到屏幕 - 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等操作 2、命令格式解析 主要用法: …...
【VictoriaMetrics】VictoriaMetrics启停脚本
先看结果,启动VictoriaMetrics UI界面可访问...
高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性
高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时…...
【正点原子FPGA连载】第七章程序固化实验摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
第七章程序固化实验 在前面的几个实验中,我们都是通过JTAG接口将FPGA配置文件和应用程序下载到MPSOC器件中。接下来我们将尝试把程序存储在非易失性存储器中,在上电或者复位时让程序自动运行,这个过程需要启动引导程序(Boot Load…...
LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】
LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】题目描述:解题思路一:其实像一道数学题目。假设三个杯子x<y<z先分两种情况。第一种:xy<z,答案直接是最大的z。第二种:xy>z。先将x与y互相…...
基于 oss 框架的音频驱动
基于 oss 框架完成系统平台音频驱动的适配。 oss 框架可被多个平台应用,因此 oss 提供 OS 目录来存放平台文件(比如:linux.c),该文件主要提供平台对 oss 框架封装后的相关接口。 以 Linux 为例,入口接口为…...
【golang】如何定制化zap日志库以及如何使用
Zap 日志 前言 本文主要介绍Go语言日志库如何简易定制化,以及如何在开发中使用。 为什么需要日志? 一个产品的诞生一定是因为有需求!新技术大部分都是为了更加便利和实用而诞生的,日志也不例外。日志顾名思义就是对整个项目的事件进行记…...
如何将 Ubuntu 升级到 22.04 LTS Jammy Jellyfish
在本教程中,我们将详细介绍如何将你的 Ubuntu 系统升级到版本 22.04 Jammy Jellyfish,这是最新的长期支持版本。 Ubuntu 22.04 LTS Jammy Jellyfish 将于 2022 年 4 月 21 日发布。它是下个两年一次的长期支持(LTS)版本,因此值得注意,而且现在 Ubuntu 21.10 的用户可以升…...
ubuntu20.04安装docker与docker-compose
安装docker 查看系统发行版本 cat /proc/version1、更新apt包 sudo apt-get update2、安装必备的软件包以允许apt通过 HTTPS 使用存储库(repository): sudo apt-get install ca-certificates curl gnupg lsb-release3、添加Docker官方版本…...
笔试题-2023-加特兰-数字IC设计【纯净题目版】
回到首页:2023 数字IC设计秋招复盘——数十家公司笔试题、面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.07.27应聘岗位:数字电路设计工程师(SoC) - 2023届笔试时长:90min笔试平台:nowcoder牛客网题目类型:问答题(11道)主观评价 难易…...
动态内存管理
目录1.为什么要动态内存分配2.动态内存函数malloc](https://cplusplus.com/reference/cstdlib/malloc/?kwmalloc)和[freecallocrealloc3.使用动态内存要注意的几点对NULL的解引用对同一块动态内存多次释放free非动态开辟的内存使用free释放一块动态开辟内存的一部分一个函数中…...
Unsupervised Question Answering 简单综述
Unsupervised Question Answering by Cloze Translation, ACL 2019 随机从文本中抽取noun phrases或者named entity作为答案将答案部分mask掉,生成cloze question利用无监督翻译,将cloze question转化为natural question 缺点: 直接利用原句…...
智慧物流管理系统
智慧物流运用物联网、大数据、云计算、人工智能等技术优化物流决策过程。智慧物流获取、分析物流信息并做出决策,从商品源开始实时跟踪与管理,保证信息流快于商品流,实现信息与物质快速、高效、流畅地运转,集自动化、数字化、网络…...
单表查询--实例
#素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 >CREATE TABLE worker ( >部门号 int(11) NOT NULL, >职工号 int(11) NOT NULL, >工作时间 date NOT NULL, >工资 float(8,2) NOT NULL, >政治…...
c语言递归 累和 ,累乘积,斐波那契数列,字符串长度
目录 递归使用场景 1:使用递归的方式计算 Sn123..100 2:计算 n!n*(n-1)*(n-2)*......*1; 3:计算输出斐波那契数列前20项,并按每行4个数的格式输出(2019年) 4: 用递归和非递归两种方式编写函数strlength()。该函数…...
数据与C(ASCII码,char)
目录 一.ASCII码讲解 二.非打印字符(转义字符) 三.扩展小知识 一.ASCII码讲解 char类型用于存储字符,从技术层面看,char时整数类型,因为char类型实际上存储的是整数而不是字符。计算机使用数字编码来处理字符&…...
第一个C语言代码(visual studin创建调试以及项目文件功能讲解)
这里我主要使用visual Studio进行编程 目录 一.创建项目 二.编写代码 1.代码编写 2.代码分析 3.main() 4.注释符 5.{} 花括号 6.声明 7.赋值 8.printf()函数 9.return 0; 一.创建项目 这里大家可能会比较疑惑,为啥都是C,没看见C的项目&…...
VIF原理
文章目录一、VIF公式和原理对于R方一般回归模型皮尔逊相关系数中的方差VIF原理:一、VIF公式和原理 所谓VIF方法,计算难度并不高。在线性回归方法里,应用最广泛的就是最小二乘法(OLS),只不过我们对每个因子…...
nginx相关反爬策略总结笔记
引言 互联网站点的流量一部分由人类正常访问行为产生,而高达30%-60%的流量则是由网络爬虫产生的,其中一部分包含友好网络爬虫,如搜索引擎的爬虫、广告程序、第三方合作伙伴程序、Robots协议友好程序等;而并非所有的网络爬虫都是友好的&#x…...
【Vue3】电商网站吸顶功能
头部分类导航-吸顶功能 电商网站的首页内容会比较多,页面比较长,为了能让用户在滚动浏览内容的过程中都能够快速的切换到其它分类。需要分类导航一直可见,所以需要一个吸顶导航的效果。 目标:完成头部组件吸顶效果的实现 交互要求 滚动距离大…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
基于Java项目的Karate API测试
Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...
