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库文件压缩…

HTML5教程

HTML5读书笔记 jack 2023.10.24 来源&#xff1a;HTML5 Canvas | 菜鸟教程 常识&#xff1a; HTML5 是下一代 HTML 标准。 HTML , HTML 4.01的上一个版本诞生于 1999 年 <!DOCTYPE html>用于声明下面代码是H5; 浏览器支持 你可以让一些较早的浏览器&#xff08;不支…

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

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

python快速入门

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

宠物用品小程序

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

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

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

前端实现埋点监控

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

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

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

基于单片机的温湿度和二氧化碳检测系统设计

目录 摘 要... 2 第一章 绪论... 5 1.1 研究课题背景... 5 1.2 国内外发展概况... 7 1.3 课题研究的目的... 8 1.4 课题的研究内容及章节安排... 9 第二章 二氧化碳和温湿度检测系统控制系统的设计方案... 11 2.1 设计任务及要求... 11 2.2 二氧化碳和…

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

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

Python类的常用特殊方法

Python类的常用特殊方法 1、__str__2、__repr__3、attr方法4、attr内置方法5、__init__6、__new__7、__call__8、内置方法与对应操作 1、str __str__方法用于str()函数转换中&#xff0c;默认使用print()方法打印一个对象时&#xff0c;就是对它的调用&#xff0c;我们可以重写…

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

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

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

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

sql-50练习题0-5

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

k8s 资源管理方式

k8s中资源管理方式可以划分为下面的几种&#xff1a;命令式对象管理、命令式对象配置、声明式对象配置。 命令式对象管理 命令式对象管理&#xff1a;直接使用命令的方式来操作k8s资源, 这种方式操作简单&#xff0c;但是无法审计和追踪。 kubectl run nginx-pod --imagengi…

C语言 每日一题 PTA 10.30 day8

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

Element 多个Form表单 同时验证

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

code编译时报错undefined reference to ...

问题描述&#xff1a; 我是在Windows10平台使用vscode编译代码时出现的这个问题&#xff0c;一共有三个文件&#xff0c;json.h、json.cpp&#xff0c;example.cpp。json.h负责函数的声明&#xff0c;json.cpp负责函数的实现&#xff0c;example.cpp负责测试代码的正确性。但是…