当前位置: 首页 > news >正文

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&#xff09…...

前端基础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字打拍法

前置内容&#xff1a; 文字版 https://note.youdao.com/s/6FSSvGBf &#xff08;顺序参考&#xff1a;下方的视频版里面目录顺序&#xff09; 视频版 【四川音乐学院作曲硕士】教你零基础自学乐理保姆级教学-学习视频教程-腾讯课堂 文字版还有下图红框中三个专栏里的内容&a…...

列表对象的时间进行中文格式化处理

在黑马的项目学习中&#xff0c;如何将前端页面时间显示成2023年12月21日 06:23:23中文形式。 如果你想使用中文格式化日期&#xff0c;你可以将 en-US 更改为 zh-CN&#xff0c;以使用中文语言环境。以下是修改后的代码&#xff1a; result.data.items.forEach(item > {//…...

vi和vim的区别

目录 一、前言 二、vi/vim 的介绍 三、Vi/Vim 常见指令 四、vi和vim的区别 一、前言 写这篇文章的目的&#xff0c;是为了告诉大家我们如果要在终端下对文本进行编辑和修改可以使用vim编辑器。 Ubuntu 自带了 VI 编辑器&#xff0c;但是 VI 编辑器对于习惯了 Windows 下进…...

【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作

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

【解决Typora图片不是显示问题】PicGo+Github+Typora+ onedrive/坚果云 实现笔记同步

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

使用Guava轻松创建和管理不可变集合

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

深入了解 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 的基本原理&#xff0c;原文中有提出感知路径长度&#xff08;Perceptual Path Length&#xff09;的概念。这是一种评价生成器质量的方式。 PPL基本思想&#xff1a;给出两个随机噪声 z 1 , z 2 ​ &#xff0c;为求得两点的感知路径长度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中使用封装步骤条组件

针对步骤条封装完终于清清楚楚啦 先看效果&#xff1a; 附上代码&#xff1a;使用可直接复用&#xff1a;数据是写在了当前组件中&#xff0c;如有必须&#xff0c;可以使用其中的props传值stepInfos传递相应的数据&#xff0c;根据steps步数就可以控制走到哪一步啦 <temp…...

【MySQL】sum 函数和 count 函数的相同作用

力扣题 1、题目地址 1174. 即时食物配送 II 2、模拟表 配送表&#xff1a;Delivery Column NameTypedelivery_idintcustomer_idintorder_datedatecustomer_pref_delivery_datedate delivery_id 是该表中具有唯一值的列。该表保存着顾客的食物配送信息&#xff0c;顾客在某…...

在QT Creator下用CMake编译GEOS库

最近&#xff0c;想要在C下编一个可用GDAL模块的地图管理系统&#xff0c;找来找去&#xff0c;找到了GEOS。GEOS&#xff08;Geometry Engine-Open Source&#xff09;开源几何引擎 是一个用于计算几何的JTS库的 C/C实现&#xff0c;专注于地理信息系统 &#xff08;GIS&#…...

【Qt之Quick模块】4. QML语法格式及命名规范

概述 QML&#xff08;Qt Meta-Object Language&#xff09;是一种声明式语言&#xff0c;用于设计用户界面。它是由Qt框架提供的一种描述界面组件的语言&#xff0c;可以与C代码结合使用&#xff0c;用于创建跨平台的应用程序。 QML具有以下特点&#xff1a; 声明式&#xff…...

Python内置类属性__class__属性的使用教程

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

【后台报错】插入时sql报错,varchar撑爆

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

OpenSergo使用详解

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

Vanilla Pro for Mac 一款隐藏菜单栏图标工具

Vanilla Pro Vanilla Pro是一款简单易于使用的Mac应用程序&#xff0c;可让您隐藏菜单栏图标。只需下载Vanilla&#xff0c;启动应用程序&#xff0c;然后按照提示即可开始。 资源获取 Vanilla Pro for Mac 功能特性 键盘快捷键&#xff1a;设置自定义键盘快捷键来切换菜单…...

freemarkEngine文件ftl的可视化编辑

在做导出word文件功能时&#xff0c;需要准备ftl模板&#xff0c;设置一些通配符&#xff0c;之后通过相关编码&#xff0c;即可以实现业务数据渲染后导出word的功能。但是ftl文件一般我们看不太懂&#xff0c;所以可视化创建和修改就非常合适。 1、安装office2016版本&#x…...

2023 英特尔On技术创新大会直播 | 边云协同加速 AI 解决方案商业化落地

目录 前言边云协同时代背景边缘人工智能边缘挑战英特尔边云协同的创新成果最后 前言 最近观看了英特尔On技术创新大会直播&#xff0c;学到了挺多知识&#xff0c;其中对英特尔高级首席 AI 工程张宇博士讲解的边云协同加速 AI 解决方案商业化落地特别感兴趣。张宇博士讲解了英…...

Q-star计划的更多细节

继续探讨点Q*相关的话题,这个应该是目前X和Reddit上比较火的话题了,其实就是关于Q*的方法是不是让LLM变得会产生意识,会产生自己的好恶和对人类的偏见,关于Q-star的一些介绍可以看我上一篇的扫盲帖 RLAIF方法与传说中的函数Q,揭露OpenAI那不为人知的Qstar计划 (qq.com) 我…...

python3 数据分析项目案例,用python做数据分析案例

本篇文章给大家谈谈python3 数据分析项目案例&#xff0c;以及用python做数据分析案例&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 目录 一丶可视化绘图案例 1.曲线图 2.柱形图 3.点线图 4.3D散点图 5. 绘制漏斗图 6. 绘制词云图 二丶包/模块使用示例 (1)…...

Android 12 (InputMethodManagerService) 替换默认输入法为Pinyin输入法

1.问题场景 由于系统自带的Latin输入法不支持遥控器操作&#xff0c;需要替换为RK的拼音输入法。 2. 替换步骤 1&#xff09;将LatinIME从mk中删除&#xff0c;让系统编译的时候不编译该apk --- a/Android/build/make/target/product/handheld_product.mkb/Android/build/m…...

【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《模式之谜 | 数据奇迹解码》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 &#x1f30c;1 初识模式识…...

【XML】TinyXML 详解

1、简介 优点&#xff1a; TinyXML 是一个简单、小型的 C XML 解析器&#xff0c;可以轻松集成到项目中。 TinyXML 解析 XML 文档&#xff0c;并根据该文档构建可读取、修改和保存的文档对象模型 (DOM) TinyXML 是在 ZLib 许可下发布的&#xff0c;因此可以在开源或商业代码中…...

泛社交裂变场景下AB增量科学评估方案

在数据驱动业务的大环境下&#xff0c;AB实验是对策略效果进行评估的重要指南针&#xff0c;并广泛应用在用增/推荐/搜索/内容/商业化等多个领域&#xff0c;尤其是综合评估多个策略对于大盘影响的对比效果&#xff0c;AB增量的计算就尤为重要。 背景 现在普遍常见的泛社交裂变…...

【无标题】json报错

操作失败&#xff0c;JSON parse error: Cannot deserialize value of type com.alibaba.fastjson.JSONArray from String value (token JsonToken.VALUE_STRING); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize valu…...

织梦网站地图在线生成/国外seo

2019独角兽企业重金招聘Python工程师标准>>> 这里介绍两种安装方式&#xff1a;1.Python源代码编译安装和2.从epel仓库安装 一、Python源代码编译安装 1 - 安装必要工具yum-utils它的主要功能时管理repository及扩展包的工具 sudo yum install yum-utils 如果报错提…...

运城网站建设公司有多少/搜索引擎营销案例分析题

Python是一种面向对象的解释型计算机程序设计语言&#xff0c;由荷兰人Guido van Rossum于1989年发明&#xff0c;第一个公开发行版发行于1991年。Python的特点&#xff1a;优雅、明确、简单。Python适合的领域&#xff1a;Web网站和各种网络服务、系统工具和脚本、作为“胶水”…...

江苏省省建设集团网站/品牌策划与推广方案

假设我们有三个表,A表,B表,C表.其数据量分别为100,200,300条记录.并且假设每次都是完全遍历所有数据才找到结果(其实一般情况下不会真的需要完全遍历完才能找到结果),并且假设不考虑索引,当然,就算不排除这些因素,结果比例还是一样的,只是数据大小上有点不一样.并且假设每次查询…...

文教设施网站制作方案/聊城网站seo

614 D 题意210 题意115 还要加一句话&#xff1a;输出操作后的序列。 解 思路&#xff1a; 只有两种操作是合法的&#xff1a; 将所有水平值最小的技能升高将水平值最高的技能升高到 \(A\)于是可以枚举一维&#xff0c;二分一维 解法&#xff1a;处理一个初始水平值的前缀和&am…...

网站新闻打不开/全网seo是什么意思

昨天用Extjs2.x建了弹窗里面有一个gridA&#xff0c;然后我希望点击gridA内的行实现弹窗&#xff0c;窗体内也放了一个gridB,但是当我点击gridA的行的时候弹窗是弹出来了不过在gridA的窗体后面&#xff0c;后来我在gridB的弹窗的时候加了一句Ext.getBody()的渲染效果暂时解决了…...

vx小程序怎么制作/seo职业

原标题&#xff1a;win10玩魔兽世界启动失败怎么办&#xff1f;请看过来最近小编在windows10正式版系统启动魔兽世界7.0经典游戏时&#xff0c;能正常输入账号登录战网客户端&#xff0c;也能进入游戏&#xff0c;选择完角色进场景全部loading后&#xff0c;出现所在城镇的图像…...