linux sed常用各种操作大全
经常使用,但有些总记不全,有时候经常查找,这次全部捋清楚做备忘,有需要的小伙伴欢迎收藏起来哦!
查、增、改、删一应俱全,非常详细!
目录
一、查看
查看第2行
查看第2行到第3行
查看第1行、第3行
查看从第2行开始到文件结束的内容
查看文件中包含指定字符的行
查看文件中包含指定字符的行数
二、文本内容替换
1,替换每行第一个出现的指定内容
2,全局替换
3,全局替换:按每行
4,全局替换:按指定行数
情景1:替换的范围是相连的几行或1行
情景2:替换的范围是不相连的几行
5,关于定界符
6,替换包含斜杠、反斜杠的内容
方案1
方案2
特殊情况:如果要替换的既包含/又包含\
特殊情况:斜杠替换为反斜杠
7,替换包含引号、单引号的内容
双引号替换为x
单引号替换为x
单引号替换为双引号
8,替换仅为了打印查看效果,不修改原文件时
9,一次替换多个原内容
10,替换整行内容
情景1:整体替换、行数可能变化
情景2:整体替换指定行、行数不变
方法1
方法2
情景3:操作行替换的是不相连的几行
三,追加&插入
换行插入:给第1、2、3行的每行后都新增一行插入内容x
换行插入:给所有行后都新增一行插入内容x
不换行追加:给第1行后追加内容x
不换行追加:给第2行前插入内容x
不换行追加:给文件每行末尾都追加x(sed)
不换行追加:给文件每行末尾都追加x(awk)
四,删除操作
删除空白行
删除指定行
五,同一sed操作多个条件(不同模式)
六,用另一个文件的内容替换该文件指定内容
七,删除文件中每行前的第一个空格
八,删除文件a中每行前的所有空格和所有-符号
一、查看
注意,下面每条指令中最后的a是文件名。
查看第2行
sed -n '2p' a
查看第2行到第3行
sed -n '2,3p' a
查看第1行、第3行
sed -n -e "1p" -e "3p" a
查看从第2行开始到文件结束的内容
sed -n '2,$p' a
上面指令中引号也可以去掉。
查看文件中包含指定字符的行
如下,查看文件中包含hello的行:
sed -n '/hello/p' a
或使用awk完成:
awk '/hello/' a
查看文件中包含指定字符的行数
如下,查看文件中包含hello的行的行数:
sed -n '/hello/p' a |wc -l
也可以grep实现:
grep -c "hello" a
二、文本内容替换
1,替换每行第一个出现的指定内容
如仅替换每行第一个出现的123
sed 's/123/abc/' a
2,全局替换
全局替换每行的指定内容为新内容:
sed 's/123/abc/g' a
3,全局替换:按每行
如按每行从第2个出现时开始进行替换:
sed 's/123/abc/2g' a
4,全局替换:按指定行数
情景1:替换的范围是相连的几行或1行
如下,即替换第3行~第5行内容中的123为abc
sed '3,5s/123/abc/g' a
当然,如果只想替换第3行~第5行中每行第一个123,则去掉g就可以了。
情景2:替换的范围是不相连的几行
如第1行、第3行:
sed -e '3s/123/x/g' -e '11s/123/x/g' a
或
sed -e '3s/123/x/g;11s/123/x/g' a
5,关于定界符
上述案例中/是定界符,该符号可自行设置,如我想换成用#定界:
sed 's#123#abc#2g' a
6,替换包含斜杠、反斜杠的内容
方案1
换定界符可实现,如下将/替换为x:
sed 's#/#x#g' a
如果不换定界符,就是要用\来替换含有\等符号的字符串,怎么办?
如将文件中斜杠、反斜杠替换为x,结果都一样:
sed 's/\/x/g' a
sed: -e expression #1, char 7: unterminated `s' commandsed 's///x/g' a
sed: -e expression #1, char 5: unknown option to `s'
如此会报错。那怎么解决?看方案2.
方案2
对于要替换的内容有斜杠的,用反斜杠转义即可成功:
sed 's/\//x/g' a
如果反斜杠要替换,则也用反斜杠转义:
sed 's/\\/x/g' a
特殊情况:如果要替换的既包含/又包含\
如下,将文件中的所有斜杠、反斜杠均替换为x:
sed 's/\//x/g;s/\\/x/g' a
特殊情况:斜杠替换为反斜杠
sed -i 's/\//\\/g' a
即都用反斜杠转义即可。
7,替换包含引号、单引号的内容
双引号替换为x
如下,将双引号替换为x,其中双引号要用反斜杠\转义:
sed -i 's#\"#x#g' a
单引号替换为x
如下,将单引号替换为x,其中外围的一对单引号需换为双引号,和里面不要交叉即可:
sed -i "s#'#x#g" a
单引号替换为双引号
但是,如果是引号换为另一种引号呢?如将单引号替换为双引号:
sed -i "s#'#\"#g" a
即,双引号用\转义即可成功。
8,替换仅为了打印查看效果,不修改原文件时
sed -e
9,一次替换多个原内容
解决办法:用分号;隔开
举例如替换文件中123为x,替换456为y:
sed 's/123/x/g;s/456/y/g' a
10,替换整行内容
字符c用来操作指定行,如1c指的是第一行,1,3c就是第1行~第3行
情景1:整体替换、行数可能变化
将第1行完整替换为x
sed -i '1c x' a
将第1、2行的所有内容完整替换为x
sed -i '1,2c x' a
此时效果是原来的第1、2行消失,被替换为了x,相当于文件整体少了一行。
(注意并不是把第1、2行每行都各自替换为x哦)
情景2:整体替换指定行、行数不变
将第1、2行的每行内容都替换为x
方法1
sed -i '1c x' a | sed -i '2c x' a
即用管道符连接多个行操作。
方法2
不使用c,使用正则+替换的办法来实现:
sed -i '1,2s/.*/x/g' a
情景3:操作行替换的是不相连的几行
如果是不相连的两行,如第1行、第3行:
sed -i -e '1s/.*/x/g' -e '3s/.*/x/g' a
或
sed -i -e '1s/.*/x/g;3s/.*/x/g' a
三,追加&插入
下面都是操作a文件。
换行插入:给第1、2、3行的每行后都新增一行插入内容x
sed '1,3ax' a
如文件a内容是:
hello
hello.hello
12345123
操作后变为6行:
hello
x
hello.hello
x
12345123
x
换行插入:给所有行后都新增一行插入内容x
sed -i 'ax' a
不换行追加:给第1行后追加内容x
sed -i '1s/$/x/' a
不换行追加:给第2行前插入内容x
sed -i '2s/^/x/' a
不换行追加:给文件每行末尾都追加x(sed)
sed -i 's/$/x/' a
不换行追加:给文件每行末尾都追加x(awk)
awk '{print $0"x"}' a
或
awk '$0=$0"x"' a
注意,此操作(awk)不会实际修改文件。
四,删除操作
注意:下述操作如果只想操作后打印出来而不是真正修改文件,则去掉 -i参数即可。
主要是用d字符删除。
删除空白行
sed -i '/^$/d' a
删除指定行
如删除第1行
sed -i '1d' a
删除最后一行
sed -i '$d' a
删除第2行到第3行
sed -i '2,3d' a
删除第2行到尾行
sed -i '2,$d' a
删除所有以hello开头的行
sed -i '/^hello/d'
删除所有包含hello的行
sed -i '/hello/'d a
五,同一sed操作多个条件(不同模式)
-e选项允许在同一行里执行多条命令。
举例如:将第1行替换为x、将文件中123替换为x,将456替换为y,且上述所有操作实际修改到文件
sed -i -e '1c x' -e 's/123/x/g;s/456/y/g' a
可以看到,不同的操作用-e指定,多个替换直接可以在一个-e内完成并可以用分号连接。
六,用另一个文件的内容替换该文件指定内容
-r来指定目标文件。如下,用b文件的内容替换a文件中的所有123
sed -i '/123/r b' a
七,删除文件中每行前的第一个空格
sed 's/^ //g' a
注意,此时仅删除每行开始的第一个空格,如果某行开头有多个空格只会删除第一个。
如要要删除每行前所有空格:
sed 's/^[ ]*//' a
八,删除文件a中每行前的所有空格和所有-符号
文件a内容如下:
cat aaaabbb
-cccddd- eee
操作起来:
sed -i 's/^[ -]*//' a
再次查看:
#cat ccc
aaa
bbb
ccc
ddd
eee
相关文章:
linux sed常用各种操作大全
经常使用,但有些总记不全,有时候经常查找,这次全部捋清楚做备忘,有需要的小伙伴欢迎收藏起来哦! 查、增、改、删一应俱全,非常详细! 目录 一、查看 查看第2行 查看第2行到第3行 查看第1行、…...

通过 Keycloak 结合 OAuth2.0协议进行 Amazon API Gateway 鉴权
1. 简介 本文介绍了如何通过 Keycloak,并结合 Amazon API Gateway 内置的授权功能,完成对 Amazon 资源请求的鉴权过程。API Gateway 帮助开发者安全的的创建、发布、维护并管理 API 的访问。在中国区,由于Cognito 仍未上线,因此使…...

修复中间件log4j漏洞方案(直接更换漏洞jar包)
说明: 后台服务里面的log4j漏洞我们已经全部升级处理了,但是一些中间件镜像包里的log4j漏洞需要单独处理 解决办法以ElasticSearch7.6.2为例: 方法: (1)找到容器里面有哪些旧的log4j依赖包 (…...

怎么压缩pdf文件大小?详细压缩步骤
怎么压缩pdf文件大小?在日常的工作和学习中,我们频繁地处理PDF文件。然而,有时候这些文件的大小可能会非常庞大,这给我们带来了一系列的问题。首先,它们占用了大量的存储空间,使得我们的设备变得拥挤不堪。…...
php 安装rabbitmq:如何使用 PHP 安装 RabbitMQ?
示例示例安装Erlang要在PHP环境中使用,需要先安装Erlang,它是的运行环境。 1、安装Erlang 首先,要在PHP环境中使用RabbitMQ,需要先安装Erlang,它是RabbitMQ的运行环境。 可以使用下面的命令来安装Erlang:…...

算法训练营day44|动态规划 part06:完全背包 (完全背包、 LeetCode518. 零钱兑换 II、377. 组合总和 Ⅳ )
文章目录 完全背包518. 零钱兑换 II (求组合方法数)思路分析代码实现思考总结 377. 组合总和 Ⅳ (求排列方法数)思路分析代码实现思考总结 完全背包 完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 依然举这个例子: 背包最大重量为4。 物…...

包管理工具--》其他包管理器之cnpm、pnpm、nvm
包管理工具系列文章目录 一、包管理工具--》npm的配置及使用(一) 二、包管理工具--》npm的配置及使用(二) 三、包管理工具--》发布一个自己的npm包 四、包管理工具--》yarn的配置及使用 五、包管理工具--》其他包管理器之cnpm…...

线性代数的学习和整理22:矩阵的点乘(草稿)
4 矩阵乘法 A,B两个同阶同秩N阵,看上去结构一样,但两厢相乘,在做在右,地位差别巨大。 在左,你就是基,是空间的根本,是坐标系,是往哪去、能到哪的定海神针,是如来佛手&a…...

如何在Windows中使用C#填写和提取PDF表单
如何在Windows中使用C#填写和提取PDF表单 PDF表单不仅允许用户填写和提交数据,也允许用户创建各种表单域收集用户的数据,并通过提取表单字段值,将收集和合并提交的数据进一步分析或处理。PDF通过电子方式填写、保存和共享的形式,…...
microsoft.office.interop.word 怎样 读取 某个汉字 字体颜色为红色
SKY[管理]筱傑 SKY[机器]筱淋 microsoft.office.interop.word 怎样 读取 某个汉字 字体颜色为红色呢? 要读取某个汉字的字体颜色是否为红色,您可以使用Microsoft.Office.Interop.Word来进行操作。以下是一个示例代码,可以帮助您实现该功能&am…...
第二十二章 Classes - 调用类方法的快捷方式
文章目录 第二十二章 Classes - 调用类方法的快捷方式调用类方法的快捷方式类参数 第二十二章 Classes - 调用类方法的快捷方式 调用类方法的快捷方式 使用 ObjectScript 调用类方法时,在以下情况下可以省略包(或更高级别的包):…...
标准C++day2——函数重载、默认形参和引用
一、函数重载 1、什么是函数重载? 在同一作用域下,函数名相同,参数列表不同的函数构成重载关系 函数重载与返回值类型、参数名无关 与作用域是否相同,以及参数列表的数量、参数类型、常属性不同等有关 2、C是如何实现函数重载的&a…...
Qt5下遍历QList的方法
lines定义如下 QMap<QString,Line> lines; Line的定义如下 class Line{protected:QString name;QColor color;QList<int> total_stations; // all statuibQList<QString> start_stas,end_stas; //start end stationQList<QList<QString>>sta_li…...

Leetcode 剑指 Offer II 043. 完全二叉树插入器
题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 完全二叉树是每一层(除最后一层外)都是完…...

链路追踪Skywalking应用实战
目录 1 Skywalking应用2 agent下载3 agent应用3.1 应用名配置3.2 IDEA集成使用agent3.3 生产环境使用agent 4 Rocketbot4.1 Rocketbot-仪表盘4.2 Rocketbot-拓扑图4.3 追踪4.4 性能分析4.5 告警4.5.1 警告规则详解4.5.2 Webhook规则4.5.3 自定义Webhook消息接收 1 Skywalking应…...

提升你的Android开发技能:从AR/VR沉浸到UI设计和故障排除
文章目录 探索最新AR/VR应用在教育、游戏、医疗等领域的应用教育领域游戏领域医疗领域 深入了解Android内存管理与性能优化的方法与技巧垃圾回收机制内存泄漏使用弱引用避免过度渲染内存优化图像优化延迟加载Android中的调试技术应用程序分析 分享如何提高Android应用的易用性和…...

Arm 架构 Ubuntu 使用 Docker 安装 Gitlab 并使用
官方 gitlab 文档 我的系统是 arm 架构的 ubuntu 官网没有提供 arm 架构的 docker 的 gitlab 的安装方式,直接安装的也是后来加的,文档也是随笔带过,,,我用到了,记录一下 默认已经安装了 docker 在 docker …...

百度地图3D棱柱鼠标事件
百度地图2D API JavaScript API | 百度地图API SDK 百度地图3D API jspopularGL | 百度地图API SDK 3D棱柱效果如下 一. 渲染地图 var map new BMapGL.Map(container, {style: {styleJson: styleJson2} }) map.centerAndZoom(new BMapGL.Point(116.404, 39.925), 9); map…...
PHP调用java class 类实现文件签名
PHP调用java class 类实现文件签名 原始代码改造开始PHP内调用方式起因:对接某平台API接口,发送的文件需要做 SM3 签名,对方平台是java写的,只有java加密示例,照着java的加密算法翻译为PHP版本,在编码转换上始终有些差异。没办法,只能想办法使用他们的java方式。 原始代…...
信号和槽机制
信号和槽机制 信号和槽的使用自定义信号槽信号槽机制是Qt框架中引以为豪机制之一,所谓信号槽实际就是类似于Gof中的观察者模式。当某个事件发生以后,比如点击一下按钮,按钮就会触发一个信号,这个信号按照类似广播的形式进行发送,如果某个对象对这个信号感兴趣就会触发连接…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...

stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...