Linux:sed进阶(12)

news2025/1/11 18:39:50

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=static

sed '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

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

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

相关文章

普中51单片机学习(定时器和计数器)

定时器和计数器 51单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器/计数器。定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的,不需要CPU的参与。51单片机中的定时器/计数器是…

nginx的功能以及运用

nginx与apache的对比 nginx优点 nginx使用场景 编译安装nginx过程 1.先清空opt文件夹 2.关闭防火墙,关闭防护 3 安装依赖包,可以通过本地yum去安装 首先就是挂载,随后切换到配置文件中修改 4本地配置文件配置内容 5 随后安装环境包 yum -y …

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(9)模型优化

模型训练后,就要进行模型优化了。 一般来讲,很简单,优化就是不换模型换参数,或者直接换模型。 换了之后来对比,最后选个最好的。 比如在本案例中,选择LinearRegression后,MSE从22下降到12&am…

LWM(LargeWorldModel)大世界模型-可文字可图片可视频-多模态LargeWorld-详细安装记录

说明 Large World Model(LWM)是一个通用的大环境多模态自回归模型,它利用了一个技术名为RingAttention,通过在大型的多样化视频和图书数据集上的训练,实现了对语言、图像和视频的理解与生成能力。 在github上已有4.2k…

医疗在线问诊小程序:开启数字化医疗新篇章

随着科技的飞速发展,医疗行业正逐步向数字化转型。其中,医疗在线问诊小程序作为一种新型的医疗健康服务模式,为人们提供了更为便捷、高效的医疗咨询服务。本文将探讨医疗在线问诊小程序的发展背景、优势及应用场景,以期为医疗行业…

视频生成模型:构建虚拟世界的模拟器 [译]

原文:Video generation models as world simulators 我们致力于在视频数据上开展生成模型的大规模训练。具体来说,我们针对不同时长、分辨率和宽高比的视频及图像,联合训练了基于文本条件的扩散模型。我们采用了一种 Transformer 架构&#…

第三百五十七回

文章目录 1. 概念介绍2. 使用方法2.1 List2.2 Map2.3 Set 3. 示例代码4. 内容总结 我们在上一章回中介绍了"convert包"相关的内容,本章回中将介绍collection.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的内容是col…

第3.2章:Doris-2.0数据导入——Compaction机制

目录 一、Compaction概述 1.1 LSM-Tree概述 1.2 Compaction概述 1.3 Rowset数据版本 1.4 Compaction优点 1.5 Compaction问题 1.5.1 Compaction速度低 1.5.2 写放大问题 1.6 Compaction调优 1.6.1 业务侧 1.6.2 运维侧 二、Compaction执行方式 2.1 Vertical Com…

【Unity】【VR开发】Unity云同步功能使用心得

【背景】 有时出差,旅行等等也带着电脑,晚上想要继续编辑项目,就需要用到云同步功能。目前实践下来,发现有些内容可以同步,有些内容则是不可以同步的,总结如下。 【如何云同步一个本地项目】 UnityHub的项目面板中有两个选项卡:项目和云端项目。 鼠标挪动到想要云同步…

Linux——信号(3)

经过前两部分的介绍,我们现在已经认识了信号是如何产生的,并且知道无 论信号是如何产生的,最终只能由操作系统来对特定进程发送信号,而发送 信号其实也就是写信号,往内核数据结构(pending表)中写…

STM32引脚重定义问题

最近在搞资源管理,发现有些引脚不能用 比如这个PE引脚。我想用他输出PWM,但是不能用,我也重定义了,还是不能用。回去翻看了技术手册。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射引脚功能,需…

Java面试题:volatile专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第4篇文章,我们一起来看看面试中会问到哪些关于volatile的问题吧。数据来源: 大部分来自于各机构(Java之父,Java继父,某灵,某泡,某客)以及各博主整理文档…

解决Ubuntu中vscode右键没有create catkin package

右键发现没有这个create catkin package 解决方案: 查了一会发现安装个拓展就可以了 效果:

最新Unity游戏主程进阶学习大纲(2个月)

过完年了,很多同学开始重新规划自己的职业方向,找更好的机会,准备升职或加薪。今天给那些工作了1~5年的开发者梳理”游戏开发客户端主程”的学习大纲,帮助大家做好面试准备。适合Unity客户端开发者。进阶主程其实就是从固定的几个方面搭建好完整的知识体…

【Spring】创建和使用

目 录 一.创建 Spring 项目1.1 创建⼀个 Maven 项目1.2 添加 Spring 框架依赖1.3 手动创建启动类 二.将 Bean 对象存储到 Spring2.1创建Bean对象2.2将 Bean 存储到 Spring 三.获取并使用 Bean 对象3.1 创建 Spring 上下文3.2 获取指定的 Bean 对象3.3 使用 Bean 四.总结 经过前…

Elasticsearch:创建自定义 ES Rally tracks 的分步指南

作者:Alejandro Snchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是什么?它的用途是什么? ES Rally 是一个用于在 Elasticsearch 上测试性能的工具,允许你运行和记录比较测试。 做出决策可能很困难&#x…

体感互动游戏定制开发:创新与技术的交融

体感互动游戏是一种结合体感技术和游戏娱乐的新型形式,为玩家提供了更加身临其境的游戏体验。而要开发一款成功的体感互动游戏,需要一支跨学科的团队,他们将创新与技术有机地结合,以满足用户的需求和期待。 首先,游戏…

钉钉小程序 没有调用该接口的权限

钉钉小程序 没有调用该接口的权限 problem 钉钉官方自带免登陆小程序 后端接口报错 {"errcode":60011,"errmsg":"没有调用该接口的权限,接口权限申请参考:https://open.dingtalk.com/document/orgapp-server/add-api-permiss…

Flutter插件开发指南02: 事件订阅 EventChannel

Flutter插件开发指南02: 事件订阅 EventChannel 视频 https://www.bilibili.com/video/BV1zj411d7k4/ 前言 上一节我们讲了 Channel 通道,但是如果你是卫星定位业务,原生端主动推消息给 Flutter 这时候就要用到 EventChannel 通道了。 本节会写一个 1~…