sed工作原理:

sed: Stream Editor。流编辑器 --- 属于行编辑工具

sed和vim一样都是文本编辑工具。

行编辑工具:一行一行处理文件内容

全屏编辑工具:一次性将文件内容加载到内存

sed工作流程:

sed工作逻辑:逐行处理内容

一次读取一行内容到模式空间(内存空间)进行处理。这个处理过程可以是输出,也可以是更改文件内容再写入文件等。由此反复处理,直到最后一行处理完成。

sed基本用法:

sed可以显示文件内容也可以修改文件内容。

grep只能查看文件内容。

格式:

sed [option] 'script...script' [inputfile]

script: sed自身的脚本,sed自身语法的一种脚本。

inputfile: 文件,如果不写文件就对标准输入的内容进行处理

sed最基本的用法--自动打印:sed ''(''里面的脚本内容不能省略)

不输入脚本就是读入什么就默认打印什么 --- sed内置了自动打印的功能

选项:

-n:关闭sed的自动打印
-e:多点编辑(一次更改多个内容)
-r,-E:使用正则表达式
-i.bak 先把文件做个备份然后再改
-s:将多个文件视为单独的文件

sed的脚本格式:

位置和指令组合而成

地址格式: 处理文件的内容范围

空地址

表示对全文处理

单地址

num:指定的行,$:最后一行

例如:打印第三行的内容



显示ifconfig命令的第二行。

/pattern/:被此处模式所能够匹配到的每一行 (里面可以写正则表达式实现过滤)

例如:打印出包含root的行

地址范围

n,n:表示从n行到第m行,例如 3,6 表示从第3行到第6行 (n,+m 表示从n行到+m行,例如:3,+4 表示从3行到第7行)

/pat1/,/pat2/ (第一个正则表达式之后到下一个正则表达式中间的内容)

例如:匹配以b开头到以g开头的行的中间那些行。



找到了第一个满足条件的范围后不会停止,还会继续往下面找。

#,/pat/或/pat/,# (数字和正则表达式混着用)

步进:每次指定多少个

1~2 奇数行 --- 从第一行开始,以2行为步进(1 3 5 7 ...)

2~2 偶数行

命令:

1. p --- 内容打印
2. Ip --- 忽略大小写输出
3. d --- 把模式空间内容删除掉,不再自动打印了
4. a --- 再某些行后面加内容
5. i --- 再某些行前面加内容
6. c --- 替换某一行的内容
7. w --- file 另存为指定文件
8. r --- 把一个文件内容读到当前匹配到的行中
9. = --- 某一行前面添加行号
10. ! --- 除了某一行的意思
11. q --- 结束或退出sed

例如:删除偶数行,显示奇数行。



并不会真正删除文件内容,只是显示了一下。

搜索替代(sed的核心用法)

格式:

s/pattern/string/修饰符 --- 支持使用其它分隔符,可以是其它形式:s@@@,s###

替换修饰符:

 g 行内全局替换
p 显示替换成功的行
w   /PATH/FILE 将替换成功的行保存至文件中
I,i   忽略大小写

&符号:表示搜索出来的内容。 相当于一个变量,保存搜索出来的内容

正则表达式分组:小括号实现分组,后面要表示第几个分组的内容就用 \num --- 实现把一个文件的一行切成多块,保留其中之一。

比如:把r..t替换成r..ter,前面是root则&代表的就是root。



例如:值显示主机的ip地址

范例:是用sed实现批量修改网卡名称

sed高级用法:

保持空间:将模式空间的数据临时保存到这儿。

高级命令:

x 把模式空间中的内容与保持空间中的内容进行互换(数据互换)
H 把模式空间中的内容追加至保持空间中(内容追加)
n 读取匹配到的行的下一行覆盖至模式空间(下一行覆盖到模式空间)
N 读取匹配到的行的下一行追加至模式空间(下一行追加到模式空间)
d 删除模式空间中的行

范例:

Linux文本三剑客-sed的更多相关文章

  1. Linux文本三剑客超详细教程---grep、sed、awk

    awk.grep.sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单 ...

  2. Linux文本三剑客总结

    Linux文本处理三剑客 grep 文本过滤(模式:pattern)工具 grep, egrep, fgrep(不支持正则表达式搜索) grep  grep: Global search REgula ...

  3. Linux文本处理sed、软件包管理、磁盘存储、文件系统和挂载

    Linux文本处理工具sed.软件包管理.磁盘存储及文件系统 文本处理工具sed巧妙用法 1.通过sed获取文件路径的基名和目录名 思路:采用正则表达式将文本字符串分组,取对应的分组后向引用即可. 获 ...

  4. Linux 文本三剑客之 sed

    Linux 系统中一切皆文件. 文件是个文本.可以读.可以写,如果是二进制文件,还能执行. 在使用Linux的时候,大都是要和各式各样文件打交道.熟悉文本的读取.编辑.筛选就是linux系统管理员的必 ...

  5. Linux文本三剑客

    grep 文本过滤工具. 作用: 文本搜索工具,根据用户指定的行进行匹配检查,打印匹配到的行. 模式: 由正则表达式字符及文本字符所编写的过滤条件. grep的使用 语法:  grep [OPTION ...

  6. Linux 文本三剑客之 awk

    Linux 系统中一切皆文件. 文件是个文本.可以读.可以写,如果是二进制文件,还能执行. 在使用Linux的时候,大都是要和各式各样文件打交道.熟悉文本的读取.编辑.筛选就是linux系统管理员的必 ...

  7. Linux 文本三剑客之 grep

    Linux 系统中一切皆文件. 文件是个文本.可以读.可以写,如果是二进制文件,还能执行. 在使用Linux的时候,大都是要和各式各样文件打交道.熟悉文本的读取.编辑.筛选就是linux系统管理员的必 ...

  8. 文本三剑客---sed 基础

    sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器恰好相反.在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式的插入.删除或者替换数据中的文本.流编辑器则会自 ...

  9. linux文本三剑客之grep

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...

随机推荐

  1. SpringMVC踩坑3——前后端传值问题

    在前端页面点击修改,同时把需要修改的ID传到后端,后端根据ID去修改具体数据 这是前端代码 <a href="${pageContext.request.contextPath}/bo ...

  2. 从零搭建Pytorch模型教程(三)搭建Transformer网络

    ​ 前言 本文介绍了Transformer的基本流程,分块的两种实现方式,Position Emebdding的几种实现方式,Encoder的实现方式,最后分类的两种方式,以及最重要的数据格式的介绍. ...

  3. CentOS下Apache Doris Oracle ODBC外表使用指南

    1.软件环境 操作系统:CentOS 7.8 Apache Doris :0.15 Postgresql数据库:oracle 19c UnixODBC:2.3.1 Oracle ODBC :insta ...

  4. Vagrant详细教程

    一.安装virtualBox 进入 VirtualBox 的主页,即可进入下载页面. VirtualBox 是一个跨平台的虚拟化工具,支持多个操作系统,根据自己的情况选择对应的版本下载即可. 在安装完 ...

  5. 【问题解决】'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.

    问题复述 今天项目组有人找我说之前部署的程序在测试环境没问题,到生产环境出现了奇怪的问题,点按钮没反应. 我通过腾讯会议发现他们的浏览器控制台上打出了如下错误: Access to XMLHttpRe ...

  6. python数据可视化-matplotlib入门(7)-从网络加载数据及数据可视化的小总结

    除了从文件加载数据,另一个数据源是互联网,互联网每天产生各种不同的数据,可以用各种各样的方式从互联网加载数据. 一.了解 Web API Web 应用编程接口(API)自动请求网站的特定信息,再对这些 ...

  7. springCloud 微服务通过minio实现文件上传和文件下载接口

    直接上代码吧,好多文章的下载都写的不明不白的,让人理解错,气死了!! 文件上传功能 文件上传很简单,首先你得部署好minio,然后写好配置信息,我的是动态读取nacos上配置的yml @Autowir ...

  8. drools的简单入门案例

    一.背景 最近在学习规则引擎drools,此处简单记录一下drools的入门案例. 二.为什么要学习drools 假设我们存在如下场景: 在我们到商店购买衣服的时候,经常会发生这样的事情,购买1件不打 ...

  9. WinUI迁移到即将"过时"的.NET MAUI个人体验

    迁移的初衷 本人平时是做.net相关的工作,对于.net技术栈也有一些了解,自从新的.net能够跨平台之后,之前也有跨平台的ui框架Xamarin,现在微软推出了.NET MAUI这个说是 统一了开发 ...

  10. CMake技术总结

    在做算法部署的过程中,我们一般都是用C++开发,主要原因是C++的高效性,而构建维护一个大型C++工程的过程中,如何管理不同子模块之间的依赖.外部依赖库.头文件和源文件如何隔离.编译的时候又该如何相互 ...