Linux命令:文本处理工具sed详解

news2024/12/26 11:13:39

目录

一、概述

二、用法

1、基本语法

2、常用选项

3、命令格式

4、编辑命令

5、获取帮助

三、 示例

1、替换字符串

2、删除行

(1)删除包含"string"的所有行

​编辑

(2)删除从第1行到第10行的所有行

3、插入行

(1)在匹配"string"的行之前插入一行文本

(2)在匹配"string"的行之后插入一行文本

4、打印行

5、地址范围

四、高级用法示例

1、复合命令

2、脚本模式

五、 注意事项


一、概述

        sed(stream editor)是Linux/Unix系统中的一个强大的文本处理工具,它可以从标准输入读取数据,执行编辑命令,然后将修改后的输出发送到标准输出。sed命令非常适用于文本文件的处理,包括查找、替换、删除、添加行等操作,而无需修改原始文件。

       熟练掌握它sed可以极大地提高文本处理效率。

二、用法

1、基本语法

        sed的基本命令格式如下:

                sed [选项] '命令' 文件

        或者用于处理标准输入:

                sed [选项] '命令'

2、常用选项

 -e 或 --expression:指定要执行的一个或多条sed命令。

 -f 或 --file:从指定的文件中读取sed命令。

 -n 或 --quiet:抑制默认输出,只打印那些由p或=命令产生的行。

 -i 或 --in-place:直接修改输入文件而不是输出到标准输出。

 -u:使用-i时启用未缓冲模式,这对于大型文件尤其有用。

 -l 或 --line-length:设置每行打印字符数。

3、命令格式

sed命令通常包含地址和动作,格式如下:

        地址 { 动作 }

如果省略了地址,默认对所有行执行动作。

4、编辑命令

sed 的编辑命令非常多,但以下是一些最常用的:

  • s/pattern/replacement/flags:替换操作。将匹配 pattern 的内容替换为 replacement。flags 可以是 g(全局替换),i(忽略大小写)等。
  • d:删除操作。删除匹配的行。
  • p:打印操作。打印匹配的行(通常与 -n 选项一起使用)。
  • a\text:在匹配行之后追加文本 text。
  • i\text:在匹配行之前插入文本 text。
  • c\text:用文本 text 替换匹配的行。

5、获取帮助

输入如下命令:

        sed –-h

出现如下图所示的帮助信息:

三、 示例

1、替换字符串

将文件中所有的"oldstring"替换为"newstring":

sed 's/oldstring/newstring/' file12.txt

实际操作如下:

全局替换(即替换每一行中所有的匹配项):

sed 's/oldstring/newstring/g' file.txt

2、删除行

(1)删除包含"string"的所有行

        sed '/string/d' file.txt

        实际操作如下:

(2)删除从第1行到第10行的所有行

        sed '1,10d' file.txt

3、插入行

(1)在匹配"string"的行之前插入一行文本

sed '/string/i\

New line inserted here.' file.txt

(2)在匹配"string"的行之后插入一行文本

sed '/string/a\

New line inserted here.' file.txt

4、打印行

打印包含"string"的所有行:

        sed -n '/string/p' file.txt

实际操作如下:

5、地址范围

指定操作作用于某一行或一组行:

        sed '10,20s/old/new/' file.txt  替换第10到第20行中的old为new

四、高级用法示例

1、复合命令

可以组合多个命令,用分号;分隔:

sed '1s/^/ /; 2s/^/ /' file.txt  第1行和第2行前加

2、脚本模式

可以将多个命令写在一个文件中,然后用-f选项来运行这个脚本文件:

echo "s/old/new/" > sedscript

sed -f sedscript file.txt

五、 注意事项

1、sed命令是区分大小写的。

2、使用sed直接修改文件时要小心,因为一旦修改无法撤销。

3、对于复杂的文本处理任务,可能需要结合正则表达式或其他命令一起使用。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


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

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

相关文章

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 死亡对象判断方法

文章目录 垃圾回收机制死亡对象判断方法引用计数法可达性分析算法可以作为 GC Roots 的对象判断对象被回收需要经历的过程 引用类型引用汇总引用队列 废弃常量判定废弃常量废弃原因遵循原则 无用的类所需条件造成的问题解决步骤 垃圾回收机制 垃圾回收(Garbage Col…

Anaconda安装并配置Python环境

背景概述 Anaconda,中文大蟒蛇,是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。 Anaconda就是可以便捷获取包且对包能够进行管理,包括了python和很多常见的软件库和一个…

[OpenCV] 数字图像处理 C++ 学习——15像素重映射(cv::remap) 附完整代码

文章目录 前言1.像素重映射理论基础2.代码实现(1) remap()细节(2)水平翻转(2)垂直翻转(3)旋转 180 度(4)径向扭曲 3.完整代码 前言 像素重映射将图像中的每个像素映射到新位置,实现图像的扭曲、校正等操作。在 OpenCV 中,cv::remap() 函数就是用于实现这…

java实现系统文件管理

java实现系统文件管理 环境:jdk17springbootVueElementUI 背景:公司所做的项目需要别的系统向我们服务器上传文件,当我们需要查看这些文件什么时候上传的、文件数据是怎样的,只能去机房,排查问题效率较低,…

Redis复习笔记整理

目录 1、Redis简介 1.1 补充数据类型Stream 1.2 Redis底层数据结构 1.3 Redis为什么快 1.4 持久化机制* 1.4.1 RDB持久化 bgsave执行流程 如何保证数据一致性 快照操作期间服务崩溃 RDB优缺点 1.4.2 AOF持久化 为什么采用写后日志 如何实现AOF 什么是AOF重写 AO…

期末满分之模拟实现字符串函数

(一)strcpy 首先我们来了解该函数的使用方式 最简单的理解就是“复制粘贴”,比如现在有一个数组arr1,存放着 hello ;还有一个数组arr2,存放着 boy ;那么使用该函数之后,形如 strcpy&…

小米,B站网络安全岗位笔试题目+答案

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

mongoDB-1

文章目录 一、疑似坑1.11.2 mongo ops manager 一、疑似坑 1.1 https://www.bilibili.com/video/BV1H1421R7WD 2.x开始用,现在应该6.x了吧,早期四处鼓吹,为公司打造全mongo服务,为并发几千做了优化,原本打算替代MySQ…

【C++】——list

文章目录 list介绍和使用list注意事项 list模拟实现list和vector的不同 list介绍和使用 在C中,list是一个带头双向链表 list注意事项 迭代器失效 删除元素:当使用迭代器删除一个元素时,指向该元素的迭代器会失效,但是不会影响其他…

订单防重复提交:token 发放以及校验

订单防重复提交:token 发放以及校验 1. 基于Token校验避免订单重复提交 1. 基于Token校验避免订单重复提交 在很多秒杀场景中,用户为了能下单成功,会频繁的点击下单按钮,这时候如果没有做好控制的话,就可能会给一个用…

ElementUI 布局——行与列的灵活运用

ElementUI 布局——行与列的灵活运用 一 . 使用 Layout 组件1.1 注册路由1.2 使用 Layout 组件 二 . 行属性2.1 栅格的间隔2.2 自定义元素标签 三 . 列属性3.1 列的偏移3.2 列的移动 在现代网页设计中&#xff0c;布局是构建用户界面的基石。Element UI 框架通过其强大的 <e…

面向对象程序设计之继承(C++)

1.继承的定义 1.1继承的概念 继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段&#xff0c;它允许我们在保持原有类特性的基础上进⾏扩展&#xff0c;增加⽅法(成员函数)和属性(成员变量)&#xff0c;这样产⽣新的类&#xff0c;称派⽣类。继承 呈现了⾯向…

Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 参考书目&#xff1a; 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…

Delphi CxGrid的主从表显示设置

界面编辑建立两个不同级别的视图层级-Layout 其实这是一个主从表关系&#xff0c; 1&#xff1a;填好主表的keyfieldnames 2&#xff1a;填好从表的keyfieldnames 3&#xff1a;填好从表的 detaikeyfieldNames与masterkeyfieldnames 4: 从表的数据源一定要按与主表关联的…

Vue实用操作-2-如何使用网页开发者工具

第一步&#xff0c;添加扩展&#xff0c;live服务器 第二步&#xff0c;将 favicon.ico 文件加入到根目录下 第三步&#xff0c;选择以服务器方式运行&#xff0c;并打开浏览器 第四步&#xff0c;在极简插件你中找到 vue 对应插件&#xff0c;安装到扩展插件中 第五步&#xf…

通过hosts.allow和hosts.deny限制用户登录

1、Hosts.allow和host.deny说明 两个文件是控制远程访问设置的&#xff0c;通过设置这个文件可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。如果请求访问的主机名或IP不包含在/etc/hosts.allow中&#xff0c;那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机…

【南方科技大学】CS315 Computer Security 【Lab2 Buffer Overflow】

目录 引言软件要求启动虚拟机环境设置禁用地址空间布局随机化&#xff08;ASLR&#xff09;设置编译器标志以禁用安全功能 概述BOF.ctestShellCode.c解释 createBadfile.c 开始利用漏洞在堆栈上查找返回地址 实验2的作业 之前有写过一个 博客&#xff0c;大家可以先看看栈溢出…

Qt ORM模块使用说明

附源码&#xff1a;QxOrm是一个C库资源-CSDN文库 使用说明 把QyOrm文件夹拷贝到自己的工程项目下, 在自己项目里的Pro文件里添加include($$PWD/QyOrm/QyOrm.pri)就能使用了 示例test_qyorm.h写了表的定义,Test_QyOrm_Main.cpp中写了所有支持的功能的例子: 通过自动表单添加…

C++——异常处理机制(try/catch/throw)

一、什么是异常处理机制 C++中的异常处理机制是一种用来检测和处理程序执行期间可能存在的异常情况的技术。它允许开发者编写健壮的代码,能够提前预判和处理程序执行可能会出现的错误,保证程序正常执行,而不会导致程序崩溃。 C++异常处理主要由几个关键字组成: try、cat…

C++笔记之std::map的实用操作

C++笔记之std::map的实用操作 code review 文章目录 C++笔记之std::map的实用操作1.初始化1.1.使用列表初始化1.2.使用 `insert` 方法1.3.使用 `emplace` 方法1.4.复制构造1.5.移动构造2.赋值2.1.列表赋值2.2.插入元素2.3.批量插入3.取值3.1.使用 `[]` 操作符3.2.使用 `at()` …