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

Linux:sed进阶(12)

Linux:shell脚本:基础使用(5)《正则表达式-sed工具》_linux脚本表达式s-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/132347574?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170842228716800197075232%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170842228716800197075232&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-132347574-null-null.nonecase&utm_term=sed&spm=1018.2226.3001.4450一些基础的案例我都写在这个文章里了


简单的概述一下:一种流编辑器,它是文本处理中非常常用的工具,能够完美的配合正则表达式使用。可删除(delete)、改变(change)、添加(append)、插入(insert)、合并、交换文件中的数据行,或读入其它文件的数据到文件中,也可替换(substuite)它们其中的字符串、或转换(tranfer)其中的字母等。


语法:sed   参数   条件   文件等


常用选项:

  -n    抑制自动打印pattern space,sed默认输出全部,-n用于取消默认输出;

  -i     编辑文件;

  -r    支持扩展正则表达式;


常用操作符:

  a            在当前行的下一行添加内容

  c     将选定行替换为指定内容

  d     删除选定的行

  i        在当前行的上一行添加内容

  p        打印指定行内容

  s            替换选定字符为指定字符


1.改(案例)

带-i才对文件进行生效的修该,如果不带-i只是将源文件修改后的结果输出一下,但是不会进行修改文件 

sed -i 's/old/new/g' file                               #所有内容进行替换,把old替换成new
sed -i '2s/old/new/g' file                                  #将文件的第二行的所有old替换成new
sed -i '/reg/s/old/new/g' file   #包含red的行里面所有的old替换成new
sed -i '/aaa/{H;d};$G' file   #将包含aaa的行迁移至文件的末尾
sed -i '/aaa/{H;d};15G' file         #将包含aaa的行迁移至15行后
sed -i '/aaa/w 2.file' 1.file          #将1.file中包含aaa的行保存至2.file
sed 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-ens32#将sed 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-ens32
#这个文件中的所有dhcp改成static  只显示 出来但是不会写进文件里生效,意思就
#是给你看一下修该后的,但是原有数据不会被改变,你再进去配置发现一点没变
sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-eth1#将sed 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-ens32
#这个文件中的所有dhcp改成static,直接修该文件,并不会显示了
sed -i 's/dhcp/static/g' ip       #将所有的dhcp替换为static
sed -i '/^IP1/s/static/dhcp/g' ip           #将IP1开头的行替换
sed -i '2s/static/dhcp/g' ip                           #第2行的所有static替换成dhcp并写入文件
sed -i '7s/disabled/enforcing/g' /etc/selinux/config   #将第七行的全部disabled改为enforcing

2.删

语法:sed  '/表达式/d'  文件

常用语法:sed -i '2d' file                           #基于行号进行删除

                  sed -i '/reg/d' file                     #基于正则进行删除

sed '/^$/d' ip                                          #删除空行并显示在屏幕上,并不会对文件进行修改
sed -i '/IP1/d' ip                                    #删除包含IP1的行
sed -i '/^IP2/d' ip                                #删除以IP2开头的行
sed -i '2d' ip                                            #删除第二行

3.增

语法:sed '  /表达式/a "需要添加的文字"'   文件

常用语法:sed -i '2a text' file                                     ##在某行后添加内容

                     sed -i '2i text' file                                      ##在某行前添加内容

                     sed -i '/reg/a text' file                              ##结合正则在匹配行后添加内容

sed 'a IP3=static' ip  			#每一行后都加上IP3=staticsed '3a IP3=static' ip 		   #只在第3行后加上IP3=static,并显示不修改sed '3i IP3=static' ip  			#只在第3行前加上IP3=static,显示不修改sed -i '3a IP3=static' ip 			#修改,不显示sed -i '/^IP3/a "test add"' ip 	    #在以IP3开头的行后添加

 


4.查

语法:sed  -n  '/表达式/p'   文件

常用语法:sed -n '2p' file                                            ##基于行号打印内容

                     sed -n '/reg/p' file                                    ##基于正则匹配行打印内容

                     sed -n '3,5p' file                                        ##查看行号范围

                     sed -n 'p;n' file                                           ##查看所有奇数行

                     sed -n 'n;p' file                                           ##查看所有偶数行

                     sed -n '1,5{p;n}' file                                  ##查看1-5行内的奇数行

                     sed -n '5,${p;n}' file                                  ##查看5-末尾行内的奇数行

                     sed -n '5,/aaa/p' file                                 ##查看自第五行到末尾行的包含aaa的行

                     sed -n '/aaa/=' file                                    ##输出包含aaa的行的行号,仅仅是行号

sed -n '2p' /etc/hosts                           ##查看第二行

sed -n '/www/p' /var/named/chroot/var/named/linuxfan.cn.zone ##查看包含www的解析记录

sed -n '/.100$/p' /var/named/chroot/var/named/linuxfan.cn.zone  ##查看以.100结尾的行

sed -n '2~2p' ip                                      ##从第二行,每隔两行显示

ifconfig eth0|sed -n '2p'|sed 's#.*dr:##g'|sed 's# Bc.*##g'               ##注:当sed命令处理的内容为多行内容,则以/作为表达式的分隔,若sed命令处理的内容为单行内容,作为截取的作用,以#号作为分隔符;

10.0.0.9

ifconfig eth0|sed -n '2p'|sed -r 's#(.*dr:)(.*)(Bc.*$)#\2#g'                 ##-r支持扩展正则,\2将2转义,打印出第二个范围(.*)

10.0.0.9 

ifconfig eth0|sed -n '2p'|sed -r 's#.*dr:(.*) Bc.*$#\1#g'

10.0.0.9

ifconfig eth0|sed -nr '2s#^.*dr:(.*) Bc.*$#\1#gp'

10.0.0.9

ifconfig eth0|sed -nr '1s#^.*dr (.*)#\1#gp'

00:0C:29:33:C8:75 

ifconfig eth0|sed -n '1p'|sed -r 's#(^.*dr )(.*)#\2#g'

00:0C:29:33:C8:75

ifconfig eth0|sed -n '1p'|sed 's#^.*dr ##g'           

00:0C:29:33:C8:75

ifconfig eth0|sed -nr '1s#^.*t (.*) 00.*$#\1#gp'

HWaddr

stat /etc/hosts|sed -n '4p'                           

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

stat /etc/hosts|sed -n '4p'|sed 's#^.*ss: (##g'|sed 's#/-.*$##g'

0644

stat /etc/hosts|sed -n '4p'|sed -r 's#^.*s: \((.*)/-.*$#\1#g'

0644

stat /etc/hosts|sed -nr '4s#^.*s: \((.*)/-.*$#\1#gp'

0644

stat /etc/hosts|sed -nr '4s#(^.*s: \()(.*)(/-.*$)#\2#gp'

0644

相关文章:

Linux:sed进阶(12)

Linux:shell脚本:基础使用(5)《正则表达式-sed工具》_linux脚本表达式s-CSDN博客https://blog.csdn.net/w14768855/article/details/132347574?ops_request_misc%257B%2522request%255Fid%2522%253A%252217084222871680019707523…...

Linux命令-builtin命令(执行bash内建命令)

说明 用于执行指定的bash内建命令。builtin 命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 语法 builtin [shell-builtin [arg ...]]参数 shell-builtin(可选):要调用的bash内建命令。 arg(可选&#xff09…...

HTML的特殊字符

HTML的特殊字符 有些特殊的字符在 html 文件中是不能直接表示的&#xff0c;例如: 空格&#xff0c;小于号(<)&#xff0c;大于号(>)&#xff0c;按位与(&)。 空格 示例代码&#xff1a; 运行结果&#xff1a; 由于html 标签就是用 < > 表示的&#xff0…...

内核移植学习

内核移植 内核移植就是指将RT-Thread内核在不同的芯片架构、不同的板卡上运行起来。 移植可分为CPU架构移植和BSP板级支持包移植两部分。 CPU架构移植 在嵌入式领域有多种不同CPU架构&#xff0c;例如Cortex-M、ARM920T、MIPS32、RISC-V等等。 为了使RT-Thread能够在不同C…...

Mysql 两个日期相减得到指定的格式数据

首先避坑&#xff1a; Mysql 中两个日期直接相减&#xff0c;若在同一天则得到的是秒&#xff0c;否则相减得到的并不是秒&#xff0c;一定要注意。 函数 TIMESTAMPDIFF(unit,begin,end); 函数返回 begin - end 的结果。 其中 begin 和 end 是 DATE 或 DATETIME 表达式。 …...

第六十四天 服务攻防-框架安全CVE复现Apache shiroApache Solr

第六十四天 服务攻防-框架安全&CVE复现Apache shiro&Apache Solr 知识点: 中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere, Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring, Flask,jQuery等 1、开发框…...

JavaScript 设计模式之享元模式

享元 将一部分共用的方法提取出来作为公用的模块 const Car {getName: function () {return this.name},getPrice: function (price) {return price * 30} }const BMW function (name, price) {this.name namethis.price price } BMW.prototype Car const bmw new BMW(…...

利用故事推动企业变革:如何提升数据分析技能

单一的数据和表格尽管有算法的支撑&#xff0c;但在其表达方式上总会让人感到头疼。当我们需要深入了解企业的盈利能力&#xff0c;或是尝试评估业务的增长机会时&#xff0c;以往都会将精力全部放在分析数字、阅读信息、回顾历史和沟通交流之上&#xff0c;却忽略随之而生成的…...

Python内置函数04——enumerate

文章目录 概述语法实例展示 概述 在Python中&#xff0c;enumerate()是一个很常用的内置函数。它的作用是将一个可迭代对象&#xff08;如列表、元组、字符串等&#xff09;组合为一个索引序列和元素序列的枚举对象。 语法 enumerate(iterable, start0) 其中&#xff0c;ite…...

unity学习(28)——登录功能

有之前注册的知识&#xff0c;登录就很容易处理了。 登陆成功返回id&#xff1a; 登录失败返回null&#xff1a; 测试同一账号不能重复登陆&#xff01;登录成功后最好可以跳到新的场景中 结果是好的&#xff0c;去服务器看一下对应部分的代码&#xff0c;可见&#xff0c;登…...

Mac公证脚本-Web公证方式

公证方式 Mac 公证方式有三种 公证方法 优点 缺点 阐述 Xcode Xcode携带的图形界面&#xff0c;使用方便 无法进行自动化公证 单个App应用上架使用较多 altool&#xff08;旧版&#xff09; 支持pkg&#xff0c;dmg&#xff0c;脚本自动化 2023/11/01 将会过期 已经…...

让你专注工作的思维模板,进入每天的专注生活

开启专注生活&#xff0c;打造高效氛围&#xff0c;踏上传奇之路。 如何专注工作&#xff1f; 阻止内部干扰阻止外部干扰结论 专注象限图如下&#xff1a;&#xff08;幸福是一种不断增加难度的活动&#xff09; A1是你开始做某事的时候。 A2是当任务变得过于简单的时候。 A3是…...

Java之获取Nginx代理之后的客户端IP

Java之获取Nginx代理之后的客户端IP Nginx代理接口之后&#xff0c;后台获取的IP地址都是127.0.0.1&#xff0c;解决办法是需要配置Nginx搭配后台获取的方法&#xff0c;获得设备的真实地址。我们想要获取的就是nginx代理日志中的这个IP nginx配置 首先在nginx代理的对应lo…...

【springboot+vue项目(十五)】基于Oauth2的SSO单点登录(二)vue-element-admin框架改造整合Oauth2.0

Vue-element-admin 是一个基于 Vue.js 和 Element UI 的后台管理系统框架&#xff0c;提供了丰富的组件和功能&#xff0c;可以帮助开发者快速搭建现代化的后台管理系统。 一、基本知识 &#xff08;一&#xff09;Vue-element-admin 的主要文件和目录 vue-element-admin/ |…...

音频的传输链路与延迟优化点

麦克风->系统采集模块->APP采集模块->3A、混响等音效->混音->音频编码->RTC网络发送-> MediaServer->RTC网络接收->音频jitter buffer->音频解码->音频的后处理(均衡)->APP播放模块->x系统播放模块->扬声器/耳机。 整个链路如上&a…...

【51单片机】直流电机驱动(PWM)(江科大)

1.直流电机介绍 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 2.电机驱动…...

腾讯文档(excel也一样)设置单元格的自动行高列宽

1. 选中单元格 可选择任意一个或者几个 2. 设置自动 行高和列宽 即可生效...

vue-router 提供的几种导航守卫

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中&#xff1a;全局的&#xff0c;单个路由独享的&#xff0c;或者组件级的。 1、全局前置守卫​ 你可以使用 router.beforeEach 注册一个全局前置守卫&#xff1a; const route…...

Element UI 组件的安装及使用

Element UI 组件的安装及使用 Element UI 是一套基于 Vue.js 的桌面端 UI 组件库&#xff0c;提供了丰富的、高质量的 UI 组件&#xff0c;可以帮助开发者快速构建用户界面。 1、安装 Element UI 使用 npm 安装 npm install element-ui -S2、使用 CDN 安装 在 HTML 页面中引…...

网站架构演变、LNP+Mariadb数据库分离、Web服务器集群、Keepalived高可用

目录 day02 深入理解程序的数据存储 验证 配置NFS服务器 配置代理服务器 配置名称解析 day02 深入理解程序的数据存储 程序将文字数据保存到数据库中程序将非文字数据&#xff08;如图片、视频、压缩包等&#xff09;保存到相应的文件目录中 验证 发一篇文章&#xf…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

Cursor AI 账号纯净度维护与高效注册指南

Cursor AI 账号纯净度维护与高效注册指南&#xff1a;解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后&#xff0c;许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...

Ray框架:分布式AI训练与调参实践

Ray框架&#xff1a;分布式AI训练与调参实践 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 Ray框架&#xff1a;分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...

【笔记】结合 Conda任意创建和配置不同 Python 版本的双轨隔离的 Poetry 虚拟环境

如何结合 Conda 任意创建和配置不同 Python 版本的双轨隔离的Poetry 虚拟环境&#xff1f; 在 Python 开发中&#xff0c;为不同项目配置独立且适配的虚拟环境至关重要。结合 Conda 和 Poetry 工具&#xff0c;能高效创建不同 Python 版本的 Poetry 虚拟环境&#xff0c;接下来…...

记一次spark在docker本地启动报错

1&#xff0c;背景 在docker中部署spark服务和调用spark服务的微服务&#xff0c;微服务之间通过fegin调用 2&#xff0c;问题&#xff0c;docker容器中服务器来后&#xff0c;注册中心都有&#xff0c;调用服务也正常&#xff0c;但是调用spark启动任务后报错&#xff0c;报错…...