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

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

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

相关文章

STM32使用软件SPI协议操作TFT18彩屏

时间记录:2024/2/20 一、SPI协议介绍 (1)SPI设备通过4根线进行通信,CS片选线,选择从设备,SCK时钟线,由主设备产生时钟,主机MOSI线连从机MISO线,由主机向从机发送信息&am…

openEuler 22.03 LTS 上源码安装 PostgreSQL 15

安装PostgreSQL 15 1 安装必要的依赖 #yum install -y readline-devel zlib-devel gcc2、下载源码 # wget https://ftp.postgresql.org/pub/source/v15.6/postgresql-15.6.tar.gz # tar -xzvf postgresql-15.6.tar.gz3 配置 # cd postgresql-15.6/ # ./configure4 编译安装…

mac东西拷不进硬盘怎么回事 mac东西拷不进硬盘怎么办 mac硬盘读不出来怎么解决 mac拷贝不了东西到u盘

有时候我们在使用mac的过程中,可能会遇到一些问题,比如mac东西拷不进硬盘。这是一种很常见的情况,但是会影响我们的工作和生活。那么,mac东西拷不进硬盘是怎么回事呢?mac东西拷不进硬盘又该怎么办呢?本文将…

Flutter 动画(显式动画、隐式动画、Hero动画、页面转场动画、交错动画)

前言 当前案例 Flutter SDK版本:3.13.2 显式动画 Tween({this.begin,this.end}) 两个构造参数,分别是 开始值 和 结束值,根据这两个值,提供了控制动画的方法,以下是常用的; controller.forward() : 向前…

自助点餐系统微信小程序,支持外卖、到店等

总体介绍 系统总共分为三个端:后端,后台管理系统、微信小程序。 基于当前流行技术组合的前后端分离商城系统: SpringBoot2MybatisPlusSpringSecurityjwtredisVue的前后端分离的商城系统, 包含分类、sku、积分、多门店等 预览图…

【动态规划专栏】专题一:斐波那契数列模型--------4.解码方法

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

深度学习基础——卷积神经网络(一)

卷积操作与自定义算子开发 卷积是卷积神经网络中的基本操作,对于图像的特征提取有着关键的作用,本文首先介绍卷积的基本原理与作用,然后通过编写程序实现卷积操作,并展示了均值、高斯与sobel等几种经典卷积核的卷积效果&#xff…

变分自编码器(VAE)PyTorch Lightning 实现

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

290. Word Pattern(单词规律)

题目描述 给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 提示: 1 < pattern.length < 300 pa…

安装VMware+安装Linux

以上就是VMware在安装时的每一步操作&#xff0c;基本上就是点击 "下一步" 一直进行安装 安装Linux VMware虚拟机安装完毕之后&#xff0c;我们就可以打开VMware&#xff0c;并在上面来安装Linux操作系统。具体步骤如下&#xff1a; 1). 选择创建新的虚拟机 2). 选…

C. LR-remainders

思路&#xff1a;正着暴力会tle&#xff0c;所以我们可以逆着来。 代码&#xff1a; #include<bits/stdc.h> #define int long long #define x first #define y second #define endl \n #define pq priority_queue using namespace std; typedef pair<int,int> p…

如何确定分库还是 分表?

分库分表 分库分表使用的场景不一样&#xff1a; 分表因为数据量比较大&#xff0c;导致事务执行缓慢&#xff1b;分库是因为单库的性能无法满足要求。 分片策略 1、垂直拆分 水平拆分 3 范围分片&#xff08;range&#xff09; 垂直水平拆分 4 如何解决数据查询问题&a…

[计算机网络]---UDP协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、端口号…

老师不能有副业吗为什么

当老师走进教室&#xff0c;他们的每一句话、每一个动作都可能影响着几十上百个孩子的未来。这样的责任&#xff0c;难道是可以轻易分担的吗&#xff1f; 或许有人会说&#xff0c;老师为什么不能有副业&#xff1f;他们也有自己的生活&#xff0c;也需要经济支持。确实&#…

鸿蒙-基于ArkTS声明式开发的简易备忘录,适合新人学习,可用于大作业

本文地址&#xff1a;https://blog.csdn.net/qq_40785165/article/details/136161182?spm1001.2014.3001.5502&#xff0c;转载请附上此链接 大家好&#xff0c;我是小黑&#xff0c;一个还没秃头的程序员~~~ 不知不觉已经有很长一段时间没有分享过自己写的东西了&#xff0…

使用Postman拦截浏览器请求

项目上线之后&#xff0c;难免会有BUG。在出现问题的时候&#xff0c;我们可能需要获取前端页面发送请求的数据&#xff0c;然后在测试环境发送相同的数据将问题复现。手动构建数据是挺麻烦的一件事&#xff0c;所以我们可以借助Postman在浏览器上的插件帮助拦截请求&#xff0…

基于微信小程序的校园跑腿系统的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

第一件事 什么是 Java 虚拟机 (JVM)

1、什么是虚拟机&#xff1f; - 这个其实是一个挺逗的事情&#xff0c;说白了&#xff0c;就是基于某个硬件架构&#xff0c;在这个硬件部署了一个操作系统&#xff0c;再构架一层虚拟的操作系统&#xff0c;这个新构架的操作系统就是虚拟机。 不知道的兄弟姐妹们&#xff0c;…

[word] 怎么把word表格里的字放在正中间? #职场发展#知识分享#知识分享

怎么把word表格里的字放在正中间&#xff1f; word表格中文字在中间的处理方式如下&#xff1a; 1、在表格中选择需要居中的文字的单元格&#xff0c;具体如下图。 2、全选后&#xff0c;鼠标在工具栏中找到&#xff1a;对齐方式&#xff0c;点击它后面的倒三角&#xff0c;如…

头部新势力新车型将全系标配!4D成像雷达元年真来了?

4D成像雷达赛道又热闹起来了。 自2023年2月&#xff0c;森思泰克2片级联4D成像雷达STA77-6全球首发量产车型——理想L7正式发布上市&#xff0c;立下了国产4D成像雷达产品在乘用车前装量产的重要里程碑事件&#xff0c;业界普遍认为2023年将迎来4D成像雷达规模化量产元年。 尽…