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:操作行替换的是不相连的几行
11,替换的内容中包含中括号[]的
三,追加&插入
换行插入:给第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
11,替换的内容中包含中括号[]的
如原内容为[a] = 1,替换为a = 1
sed -i "s#\[a\] = 1#a = 1#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行、…...
Vue2+Vue3组件间通信方式汇总(3)------$bus
组件间通信方式是前端必不可少的知识点,前端开发经常会遇到组件间通信的情况,而且也是前端开发面试常问的知识点之一。接下来开始组件间通信方式第三弹------$bus,并讲讲分别在Vue2、Vue3中的表现。 Vue2Vue3组件间通信方式汇总(1)…...

前端基础location的使用
概念 获取当前页面的地址信息,还可以修改某些属性,实现页面跳转和刷新等。 样例展示 window.location 含义.originURL 基础地址,包括协议名、域名和端口号.protocol协议 (http: 或 https:).host域名端口号.hostname域名.port端口号.pathname路…...

Android JNI入门到基础
一、JNI项目创建 AS创建项目时选择NativeC 会创建一个基本的JNI项目 MainActivity中写java层的native方法 具体实现在cpp文件中 native-lib.cpp #include <jni.h> #include <string>extern "C" JNIEXPORT jstring JNICALL Java_com_cn_techvision_j…...

60.乐理基础-打拍子-V字打拍法
前置内容: 文字版 https://note.youdao.com/s/6FSSvGBf (顺序参考:下方的视频版里面目录顺序) 视频版 【四川音乐学院作曲硕士】教你零基础自学乐理保姆级教学-学习视频教程-腾讯课堂 文字版还有下图红框中三个专栏里的内容&a…...
列表对象的时间进行中文格式化处理
在黑马的项目学习中,如何将前端页面时间显示成2023年12月21日 06:23:23中文形式。 如果你想使用中文格式化日期,你可以将 en-US 更改为 zh-CN,以使用中文语言环境。以下是修改后的代码: result.data.items.forEach(item > {//…...
vi和vim的区别
目录 一、前言 二、vi/vim 的介绍 三、Vi/Vim 常见指令 四、vi和vim的区别 一、前言 写这篇文章的目的,是为了告诉大家我们如果要在终端下对文本进行编辑和修改可以使用vim编辑器。 Ubuntu 自带了 VI 编辑器,但是 VI 编辑器对于习惯了 Windows 下进…...

【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作
详情点击查看福利:【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作 目标: 1、熟练掌握ChatGPT提示词技巧及各种应用方法,并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告,提供…...

【解决Typora图片不是显示问题】PicGo+Github+Typora+ onedrive/坚果云 实现笔记同步
【解决Typora图片不是显示问题】PicGo、Github、Typora实现笔记同步 写在前面: typora笔记软件使用记录typora图片上传问题:原因分析:解决方案:PicGoGithubTypora 坚果云/onedrive 实现笔记同步第一步. 设置上传模式:u…...

使用Guava轻松创建和管理不可变集合
第1章:引言 大家好,我是小黑。今天,我们来聊聊一个在Java编程里超有用的话题:使用Guava创建和管理不可变集合。首先,咱们得明白,什么是不可变集合。简单来说,不可变集合就是一旦创建就不能被修…...

深入了解 Android 中的应用程序签名
深入了解 Android 中的应用程序签名 一、应用程序签名介绍1.1 应用程序签名1.2 应用程序签名的意义1.3 应用程序签名的流程1.4 应用程序签名的方案1.5 签名的重要性和应用场景 二、AOSP 的应用签名2.1 AOSP的应用签名文件路径2.2 应用程序指定签名文件 三、Android Studio 的应…...

说说 style gan 中的感知路径长度(Perceptual Path Length)
我在之前的博库中介绍了 style gan 的基本原理,原文中有提出感知路径长度(Perceptual Path Length)的概念。这是一种评价生成器质量的方式。 PPL基本思想:给出两个随机噪声 z 1 , z 2 ,为求得两点的感知路径长度PPL…...

基于JAVA的厦门旅游电子商务预订系统 开源项目
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒店管理模块2.4 美食管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学生表3.2.3 学生表3.2.4 学生表 四、系统展示五、核心代码5.1 新增景点类型5.2 查询推荐的…...

uniapp中使用封装步骤条组件
针对步骤条封装完终于清清楚楚啦 先看效果: 附上代码:使用可直接复用:数据是写在了当前组件中,如有必须,可以使用其中的props传值stepInfos传递相应的数据,根据steps步数就可以控制走到哪一步啦 <temp…...
【MySQL】sum 函数和 count 函数的相同作用
力扣题 1、题目地址 1174. 即时食物配送 II 2、模拟表 配送表:Delivery Column NameTypedelivery_idintcustomer_idintorder_datedatecustomer_pref_delivery_datedate delivery_id 是该表中具有唯一值的列。该表保存着顾客的食物配送信息,顾客在某…...

在QT Creator下用CMake编译GEOS库
最近,想要在C下编一个可用GDAL模块的地图管理系统,找来找去,找到了GEOS。GEOS(Geometry Engine-Open Source)开源几何引擎 是一个用于计算几何的JTS库的 C/C实现,专注于地理信息系统 (GIS&#…...
【Qt之Quick模块】4. QML语法格式及命名规范
概述 QML(Qt Meta-Object Language)是一种声明式语言,用于设计用户界面。它是由Qt框架提供的一种描述界面组件的语言,可以与C代码结合使用,用于创建跨平台的应用程序。 QML具有以下特点: 声明式ÿ…...

Python内置类属性__class__属性的使用教程
概要 Python作为一种高级编程语言,提供了丰富的功能和灵活性,使得开发人员能够更加方便地处理各种任务。其中一个强大的功能是内置类属性__class__属性。本文将详细介绍__class__属性的用法,帮助读者更好地理解和利用这一功能。 第一部分&am…...

【后台报错】插入时sql报错,varchar撑爆
后台的一个报错。按照正常的需要复现,或者查一下日志。但是凭借多年经验和大胆猜测,以及对自己代码要自信 引用一下文章 目测7*15 105项。每个id有9个数字加上分隔符刚好十个。大概就是超过了定义的一千的varchar长度。直接改数据库就好了。 简单粗暴…...

OpenSergo使用详解
简介 OpenSergo是一个基于微服务治理的标准和生态,覆盖了服务元信息、流量治理、服务容错、数据库/缓存治理、服务注册发现、配置治理等十几个关键领域,覆盖了完整的微服务生命周期(从开发态到测试态,到发布态,再到运…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...