每天学习一个Linux命令之sed

每天学习一个Linux命令之sed

欢迎来到我的博客系列,今天我们将学习一个非常强大的Linux命令——sed,它可以在文本处理中实现各种强大的操作。sed(Stream Editor)是Linux环境下的一种流编辑器,可以对文件内容进行替换、删除、插入等操作,相当于文本处理的瑞士军刀。让我们一起来了解sed命令的各种选项及其功能。

sed命令的可用选项

以下是sed命令的一些常用选项:

  1. -n:不自动输出模式空间的内容,仅在使用p命令时输出;
  2. --version:显示sed命令的版本信息;
  3. -e:允许在命令行上编写多个sed命令;
  4. -f:将sed命令从脚本文件中读取;
  5. -i:直接编辑文件,而不是将结果输出到终端;
  6. -r:启用扩展正则表达式(ERE);
  7. -s:忽略多个空行,只处理单个空行;
  8. -u:禁用sed输出缓冲区;
  9. -z:将输入文件的行以NULL字符分隔。

现在,让我们详细介绍每个选项的用法。

-n选项

  • -n选项会阻止sed自动输出模式空间的内容,只有在使用p命令时才会输出。这在大多数情况下用于只打印匹配的行。例如:
sed -n "/pattern/p" file.txt

上述命令将只输出file.txt文件中匹配模式pattern的行。

–version选项

  • --version选项用于显示sed命令的版本信息。例如:
sed --version

上述命令将显示sed命令的版本信息。

-e选项

  • -e选项允许在命令行上编写多个sed命令。多个命令需要用分号分隔。例如:
sed -e "s/pattern/replacement/" -e "s/another_pattern/another_replacement/" file.txt

上述命令将在file.txt文件中替换两个不同的模式。

-f选项

  • -f选项用于从脚本文件中读取sed命令。脚本文件可以包含一系列的sed命令,并按照顺序执行。例如:
sed -f script.sed file.txt

上述命令将根据script.sed文件中的sed命令对file.txt文件进行处理。

-i选项

  • -i选项用于直接编辑文件,而不是将结果输出到终端。这样可以直接修改原始文件的内容。例如:
sed -i "s/pattern/replacement/" file.txt

上述命令将替换file.txt文件中的模式patternreplacement

-r选项

  • -r选项用于启用扩展正则表达式(ERE)支持。扩展正则表达式支持更多的元字符和功能。例如:
sed -r "s/(pattern1)|(pattern2)/replacement/" file.txt

上述命令将替换file.txt文件中的pattern1pattern2replacement

-s选项

  • -s选项用于忽略多个空行,只处理单个空行。这在处理连续空行时非常有用。例如:
sed -s "/^$/d" file.txt

上述命令将删除file.txt文件中的连续空行。

-u选项

  • -u选项用于禁用sed输出缓冲区,即立即输出结果。这对于实时查看处理进度很有用。例如:
sed -u "s/pattern/replacement/" file.txt

上述命令将立即输出file.txt文件中的替换结果。

-z选项

  • -z选项用于将输入文件的行以NULL字符分隔。这对于处理包含NULL字符的文件很有用。例如:
sed -z "s/pattern/replacement/" file.txt

上述命令将处理包含NULL字符的file.txt文件。

结论

sed是一个非常强大的文本处理工具,本文介绍了sed命令的各种选项及其用法。这些选项可以帮助我们在Linux环境下高效地处理文本文件。通过不同的选项组合,您可以实现更多的功能。希望本文对各位读者有所帮助,谢谢阅读!

参考资料

  • GNU sed - Stream Editor
  • Linux sed命令

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

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

相关文章

Mysql_数据库事务

文章目录 😊 作者:Lion J 💖 主页: https://blog.csdn.net/weixin_69252724 🎉 主题: MySQL__事务) ⏱️ 创作时间:2024年04月26日 ———————————————— 这里写目…

服务端不 listen 可以创建 tcp 连接吗

这个问题有三类答案。 上来就撸 linux kernel 源码,折腾半天,哦,终于在 tcp_rcv_state_process 里找到了 tcp_rcv_synsent_state_process 调用,后者包含: if (th->syn) {/* We see SYN without ACK. It is attemp…

【golang-ent】go-zero框架 整合 ent orm框架实现一对一 一对多 多种姿势查询方式

一、ent的 O2O 问题 官方文档如下: https://entgo.io/zh/docs/schema-edges#o2o-same-type 1、ent O2O问题 官方提供了三种 one2one的方式,可以看到他全部使用了 mysql的 foregionKey 的方式进行关联,虽然举例了单表和双表的不同使用方式,但是我们实际使用mysql中是不创建…

【R语言数据分析】函数

目录 自定义函数 apply函数 分类汇总函数aggregate 自定义函数 R语言中的自定义函数更像是在自定义一种运算规则。 自定义函数的语法是 函数名 函数体 } 比如 表示定义了一个名为BMI_function的函数,这个函数代表了一种运算规则,就是把传入的x和…

目标检测算法YOLOv3简介

YOLOv3由Joseph Redmon等人于2018年提出,论文名为:《YOLOv3: An Incremental Improvement》,论文见:https://arxiv.org/pdf/1804.02767.pdf ,项目网页:https://pjreddie.com/darknet/yolo/ 。YOLOv3是对YOL…

实习周志定制

实习周记一 踏进跃升成人文化培训学校有限公司的大门,我的内心充满了激动和期待。第一周的实习,我主要参与了公司文化的学习,了解了公司的教育理念和教学模式。我逐渐认识到,前台工作不仅仅是简单的接待,更是学校形象…

Node.js -- express 框架

文章目录 1. express 使用2. 路由2.1 路由的使用2.2 获取请求报文参数2.3 获取路由参数2.4 路由参数练习 3. express 响应设置4. 中间件4.1 全局中间件4.2 路由中间件4.3 静态资源中间件 5. 获取请求体数据 body-parser6. 防盗链7. 路由模块化8. 模板引擎8.1 了解EJS8.2 列表渲…

[技术总结]: Pytorch加速和省内存

目录 mmengine 相关文档pytorch ddp dataset使用共享内存加速数据读取一些大规模数据集加载模型多卡训练, 模型并行 mmengine 相关文档 MMEngine理解 pytorch ddp dataset使用共享内存 关键在于将data_list序列化 mmengine实现 或者使用lmdb数据库也可以 加速数据读取 使…

【C++】深入理解string类

一、熟悉string类 1.1 string类的由来: C语音中的字符串需要我们自己管理底层空间,容易内存泄露。而C是面向对象语音,所以它把字符串封装成一个string类。 C中对于string的定义为:typedef basic_string string; 也就是说C中的str…

java面试(微服务)

SpringCloud五大组件 Nacos:注册中心Ribbon:负载均衡Feign:远程调用sentinel:服务熔断Gateway:网关 注册中心 Eureka Nacos 负载均衡 Ribbon负载均衡流程 Ribbon的负载均衡策略 RoundRobinRule:简单的…

C++中把Lambda 表达式作为参数传递给模板函数。

例子&#xff1a; template<class fun> void mytest(fun f) {_string s1 "abc";_string s2 "abc";if (f(s1, s2)){std::cout << "相等。\n";}}int main() {mytest([](const _string s1, const _string& s2) { return s1 s2; …

贪心-区间问题

区间选点和最大不相交区间数量 区间选点问题描述 问题描述 给定 N个闭区间 [ai,bj]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N&…

python学习笔记----异常、模块与包(九)

一、异常 1.1 什么是异常 在Python中&#xff0c;异常是程序执行时发生的错误。当Python检测到一个错误时&#xff0c;它会引发一个异常&#xff0c;这可能是由于多种原因&#xff0c;如尝试除以零、访问不存在的文件&#xff0c;或者尝试从列表中获取不存在的索引等。异常处…

数组的拷贝

数组的拷贝 文章目录 数组的拷贝浅拷贝内存分析 深拷贝内存分析 浅拷贝 概念&#xff1a;数组的浅拷贝是指新数组保存的是原数组的内存地址&#xff0c;并没有拷贝真正的值&#xff0c;如果原数组的内容发生改变那么新数组的内容也会发生相应改变。 代码实现&#xff1a; pu…

C语言/数据结构——每日一题(合并两个有序链表)

一.前言 嗨嗨嗨&#xff0c;大家好久不见&#xff01;今天我在LeetCode看到了一道单链表题&#xff1a;https://leetcode.cn/problems/merge-two-sorted-lists想着和大家分享一下&#xff0c;废话不多说&#xff0c;让我们开始今天的题目分享吧。 二.正文 1.1题目描述 1.2题…

phpstudy 搭建 upload-labs 文件上传靶场

phpstudy 搭建靶场&#xff1a;下载安装好phpstudy后&#xff0c;下载靶场源码&#xff1a; upload-labs下载地址&#xff1a; https://github.com/c0ny1/upload-labs 下载完压缩文件&#xff0c;解压文件&#xff0c;解压后的文件夹命名为upload--labs 将解压后到文件夹放…

python 关键字(import)

4、import 在Python编程中&#xff0c;import 是一个至关重要的关键字&#xff0c;它用于导入其他Python模块或库中的代码&#xff0c;以便在当前程序中使用。无论是Python新手还是经验丰富的开发者&#xff0c;都需要对import有深入的理解。 基础知识&#xff1a;import 的基…

docker如何生成springboot镜像

1、在springboot的jar包所在的目录下创建Dockerfile文件&#xff0c;此案例的目录为/usr/java Dockerfile的文件内容如下&#xff1a; FROM openjdk:8 LABEL author"zengyanhui" LABEL email"1181159889qq.com" WORKDIR /usr/java/springbootdemo COPY s…

路径规划 | 详解混合A*算法Hybrid A*(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 为什么需要Hybrid A*算法?2 Hybrid A*算法原理2.1 基本流程2.2 运动学约束启发式2.3 基于维诺图的路径耗散2.4 连续性节点扩展3 算法仿真3.1 ROS C++ 仿真3.2 Python仿真3.3 Matlab仿真0 专栏介绍 🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、…

负债56亿,购买理财产品遭违约,操纵虚假粉丝,流量在下滑,客户数量减少,汽车之家面临大量风险(六)

本文由猛兽财经历时5个多月完成。猛兽财经将通过以下二十二个章节、8万字以上的内容来全面、深度的分析汽车之家这家公司。 由于篇幅限制&#xff0c;全文分为&#xff08;一&#xff09;到&#xff08;十&#xff09;篇发布。 本文为全文的第十四章、第十五章、第十六章。 目…