RHCE---shell脚本编程sed

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

Liunx中筛选文本时常用的命令,常常会被提及文本三剑客,前文我们学习了文本三剑客中的grep 命令,除了grep命令我们也常用到sed命令,sed命令有着grep命令独有的功能!


一.概述

   sed 是一种流编辑器,用于在文本流中进行操作。它可以用来进行文本替换、文本删除、文本提取和文本转换等任务。sed 将输入文本作为流处理,并可以对其进行修改,然后将修改后的文本输出到标准输出或将其重定向到文件中。  

工作原理

sed 的工作流程主要包括读取、执行和显示三个过 程:

  • 读取:sed 从输入流(文件、管道、标准输入)中读取 一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
  • 执行:默认情况下,所有的sed 命令都在模式空间中顺 序地执行,除非指定了行的地址,否则sed 命令 将会 在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流。在发送数据后,模 式空间将会被清空 重复上述过程,直到将文件中所有数据处理完毕

  • 模式空间:sed在内存里开辟的空间,处理文件的每个输入行
  • 保持空间:保存处理过的输入行(将第一行的处理结果保存到该空间后继续处理第二行)
  •                   将所有行处理结束后,再将保留空间的内容写入硬盘
  • 临时缓冲区:模式空间
  • 二.sed命令

  • 格式:
  • sed  -参数  '[定址符]' '操作' 文件名

    参数:

  • -n :一般配合行号使用,使用-n后,仅显示被处理的行
    -i:直接编辑原文件,而不是由屏幕输出,默认不对原文件进行操作
    -e:对文本进行多个动作时,使用-e将动作分开执行
    -r:使用扩展正则表达式
    -f:类似于输出重定向符号,直接将sed动作写入一个文件内
    -{} :可组合多个命令,以分好隔开

    定址符:

  • 用于指定sed命令处理的行范围

  • 1,5:对文件的1-5行内容进行处理
    2,$:对文件的2到最后一行内容进行处理
    1,+3:对文件第1行以及以后的3行内容进行处理
    1~2:对文件的1,3,5,7,……的行内容进行处理
    /正则表达式/:对任何能够被正则表达式匹配到的行进行处理
    

    操作:

  • 增删改查 执行增删改查等动作

  • s:替换,替换指定字符,一般搭配正则表达式
    d:删除,删除选定的行。
    p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;其通常与“-n”选项一起用。
    =:打印行号。
    a:增加,a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
    i:插入,i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
    c:行替换,指定行中的所有内容,替换成该选项后面的字符串。
    y:字符转换,转换前后的字符长度必须相同。
    l(小写):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)
    ! :对指定行以外的所有行应用命令
    & :代表匹配到的内容

    三.案列

  • 使用 n .=.p 打印

  • [root@server ~]# sed -n '=;p' sed1.txt 
    #打印文件中所有内容,并显示行号 
    #分号;用于将操作命令串联使用 
    #-e 作用和分号相同 格式为 -e '操作' -e '操作'

  • [root@server ~]# sed -n '1p' sed1.txt
    #打印第一行
    one
  •      数字,数字 

  • [root@server ~]# sed -n '3,9p' sed1.txt 
    # 打印3-9行
    three
    four
    five
    six
    seven
    eight
    nine

    2,$

  • :对文件第7行到最后一行进行处理

  • [root@server ~]# sed -n '7,$p' sed1.txt 
  •  1~2:

  • 对文件的1,3,5,7,……的行内容进行处理
[root@server ~]# sed -n '2~2p' sed1.txt 
#从第2行开始以2为步长打印偶数行

 

  •  !

  • :对指定行以外的所有行应用命令
[root@server ~]# sed -n '1!p' sed1.txt 
#打印除了第1行的剩余行信息
  •  分号;

  • 将操作串联
[root@server ~]# sed -n '4p;6p;8p' 
# 打印4 6 8行

 1,+3:

  • 对文件第1行以及以后的3行内容进行处理
[root@server ~]# sed -n '1,+2p' sed1.txt
#打印第一行及以下2行

 

 /正则表达式/

[root@server ~]# sed -n '/^f/p' sed1.txt 
# 以正则条件检索行并打印
#打印以f开头的行 定址符/正则表达式/ 使用正则表达式为条件筛选行并打印(p)

 

[root@server ~]# sed -n '/t/p' sed1.txt 
# 检索包含t的行信息

 分号代表或关系

[root@server ~]# sed -n '/^t/p ; /^f/p' 
sed1.txt # 检索以t开头或以f开头

特殊结构 

[root@server ~]# sed -n 'p;n' sed1.txt 
# 奇数行
#特殊结构n;p 打印偶数行 p;n 打印奇数行 $= 显示行数

 四.文本替换

sed  '行范围s/旧字符串/新字符串/替换标记' 文件名
#s:替换动作 未写行范围代表对全文进行操作
  • 行范围:使用数字表示,即对第几行到第几行进行替换处 理,若省略则表示进行全文处理
  • s: 替换动作 替换标记 数字:使用1-512之间的数字,表示指定需要替换的字 符串出现第几次才进行替换
  • 替换标记
  • g:对数据中所有匹配到的内容进行替换,若省略g则 只会对第一次匹配的内容进行替换
  • p:替换成功立刻打印,一般与-n一起使用
  • w 文件名 : 将缓冲区的内容写入到指定文件中
  • & : 使用正则表达式匹配的内容进行替换
  • \ :转义符,若有特殊符号或路径则需要转义

案列 

  • # 替换所有的root为boot
[root@server ~]# sed 's/root/boot/gp'   ps  #p:仅显示处理过的结果
#g:对文中匹配的内容进行全部替换,不加g表示仅替换找到内容中第一个匹配到的目标
#提换每一行第一个root为admin
[root@server ~]# sed -n 's/root/admin/p' ps

 

  • #替换每一行的第2个root为admin 
[root@server ~]# sed -n 's/root/admin/2p' ps

  •  # 将/sbin/nolgin 替换为 /bin/bash
[root@server ~]# sed -n 's/\/sbin\/nologin/\/bin\/bash/gp' ps
#由于sed替换命令中自带/格式,当替换的文本中包含/代表路径时需要加转义符\

总结

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

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

相关文章

window系统修改rabbitmq 默认端口

安装完rabbitmq之后,默认的client端口是5672, 控制台访问端口是15672,rabbitmq管理工具启动之后在浏览器中输入地址: ​ ​http://localhost:15672/​​​ 就可以访问后台​ ​​​, 默认管理员账号:guest 密码&#x…

【0基础学Java第四课】-- 逻辑控制

4. 逻辑控制 4.1 顺序结构4.2 分支结构4.2.1 if语句判断一个数字是奇数还是偶数判断一个数字是正数,负数,还是零判断一个年份是否为闰年 4.2.2 switch 语句 4.3 while循环打印 1 - 10 的数字计算 1 - 100 的和计算 5 的阶乘计算1!2&#xff0…

Openssl数据安全传输平台014:OCCI环境搭建和使用:Centos8-Oracle19c代码跑通 + Window代码没跑通(不影响本项目)

文章目录 0 代码仓库1 启动Centos oracle数据库2 Winsows安装配置OCCI库2.1 下载文件2.2 VS 配置2.2.1 VC包含目录2.2.2 VC库目录2.2.3 连接器-附加依赖项2.2.4 代码测试-Oracle11g2.2.4.1 准备2.2.4.2 代码测试 3 Centos安装配置occi库3.0 强调3.1 下载instantclient库文件压缩…

ubuntu 安装串口工具和添加虚拟串口

目录 一、串口工具安装 二、使用Windows本身虚拟的串口 (一)添加串口 1、保证虚拟机是关闭状态,打开“虚拟机设置”,点击“添加”。 2、选中“串行端口”,点击“完成”。 3、选中刚添加的串口,下拉选…

python快速入门

语法结构 基本输出 使用print函数来完成基本输出 print("I am xl")注释 单行注释使用# 多行注释 多行注释""" 多行注释 """缩进 python和其他语言最大的区别就是用缩进来区分子代码区域而不是大括号 续行 使用\符号来完成续行…

宠物用品小程序

近年来,越来越多的人选择将宠物视为家庭的一员,为宠物购买各种用品成为了一项重要的消费活动。因此,宠物用品小程序应运而生,为消费者提供了一个便捷的购买平台,同时也为宠物带来了更加幸福的生活。 登录乔拓云平台进入…

京东平台数据分析(京东销量):2023年9月京东吸尘器行业品牌销售排行榜

鲸参谋监测的京东平台9月份吸尘器市场销售数据已出炉! 根据鲸参谋电商数据分析平台的相关数据显示,今年9月,京东吸尘器的销量为19万,环比下滑约12%,同比下滑约25%;销售额为1.2亿,环比下滑约11%&…

前端实现埋点监控

前端实现埋点&监控 实现埋点功能的意义主要体现在以下几个方面: 数据采集:埋点是数据采集领域(尤其是用户行为数据采集领域)的术语,它针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。通过埋…

本地生活商家用批量剪辑有用吗?

可以用,现在很多本地生活商家,都会通过借助批量剪辑工具来提升视频的曝光量,从而带动店铺的客流量。 推荐本地生活商家使用超级编导批量剪辑工具,这是一款0基础小白也可以很快上手的批量剪辑工具,剪辑页面布局以及功能…

python_PyQt5日周月K线纵向对齐显示_3_聚焦某段图形

目录 写在前面: 结果显示: 代码: 写在前面: “PyQt5日周月K线纵向对齐显示”,将分三篇博文描述 1 数据处理。将数据处理成适合图形显示的格式。(已写,请看往期博文) 2 显示工具…

不小心commit错误代码,还没push的回滚解决方法

命令:git reset --soft HEAD^ 第一步:找到项目所在文件夹 第二步,右键点击git base here 第三步,命令行输入git reset --soft HEAD^ 回车即可

【斗破年番】暗杀行动开始,萧炎斩杀负伤,彩鳞心疼霸气回击

【侵权联系删除】【文/郑尔巴金】 深度爆料,《斗破苍穹》年番第69集刚刚更新了!在这集剧情中,萧炎和美杜莎筹划了一场暗杀行动,以保障炎盟的安全。他们根据小医仙提供的地图,分别负责击杀慕兰三老和雁落天这两位敌方强…

sql-50练习题0-5

sql练习题0-5题 前言数据库表结构介绍学生表课程表成绩表教师表 0-1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数0-2查询"01"课程比"02"课程成绩小的学生的信息及课程分数0-3查询平均成绩大于等于60分的同学的学生编号和学生…

C语言 每日一题 PTA 10.30 day8

1.高空坠球 皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少? 输入格式 : …

Element 多个Form表单 同时验证

一、背景 在一个页面中需要实现两个Form表单,并在页面提交时需要对两个Form表单进行校验,两个表单都校验成功时才能提交 所用技术栈:Vue2Element UI 二、实现效果 三、多个表单验证 注意项: 两个form表单,每个表单上…

R语言与作物模型(以DSSAT模型为例)融合应用

随着基于过程的作物生长模型(Process-based Crop Growth Simulation Model)的发展,R语言在作物生长模型和数据分析、挖掘和可视化中发挥着越来越重要的作用。想要成为一名优秀的作物模型使用者与科研团队不可或缺的人才,除了掌握对…

秒级启动的集成测试框架

本文介绍了一种秒级启动的集成测试框架,使用该框架可以方便的修改和完善测试用例,使得测试用例成为测试过程的产物。 背景 传统的单元测试,测试的范围往往非常有限,常常覆盖的是一些工具类、静态方法或者较为底层纯粹的类实现&…

PostMan 之 Mock 接口测试

在测试的时候经常会碰到后端开发工程师的接口还没有开发完成,但是测试任务已经分配过来。没有接口怎么测试呢? 测试人员可以通过 mock server 自己去造一个接口来访问。mock server 可用于模拟真实的接口。收到请求时,它会根据配置返回对应的…

桶装水送水多门店水票押金押桶小程序开发

桶装水送水多门店水票押金押桶小程序开发 用户注册和登录首页展示各门店的桶装水品牌和价格用户可以选择门店和水品牌,并下单购买桶装水用户可以选择送水时间和地址用户可以查看自己的订单历史和当前订单状态用户可以申请退款或修改订单信息门店可以登录后台管理系…

ORACLE运行的数据库突然连接报“无监听程序”

远程:用远程的数据库连接工具用localhost可以连接,用ip地址除127.0.0.1不可连接。 可能是日志文件满了,解决办法如下: 第一步:关闭数据库监听程序【任务管理器--》服务--》右键停止服务】 第二步:找到日志…