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

Shell脚本基础( 四: sed编辑器)

目录

1 简介

1.1 sed编辑器的工作流程

2 sed

2.1 基本用法

 2.2 sed基本格式

2.2.1 sed支持正则表达式

2.2.2 匹配正则表达式

2.2.3 奇数偶数表示

2.2.4 -d选项删除

2.2.5 -i修改文件内容

2.2.6  -a 追加

2.3 搜索替代

2.4 变量


1 简介


sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。

sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个

命令文本文件中。

1.1 sed编辑器的工作流程

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

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

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,
除非是用重定向存储输出或者sed -i.

2 sed

2.1 基本用法

##默认将输入内容打印出来,系统自带自动打印

 

##查看文件内容

 

##支持重定向

 

##也支持管道符

 

 2.2 sed基本格式

sed [option]...    'script;script;...'           [input  file...]
        选项         自身脚本语法         支持标准输入管道

常用选项

-n不输出模式空间内容到屏幕,即不自动打印
-e多点编辑[root@www data]#sed -n -e '/^r/p'  -e'/^b/p' /etc/passwd
-fFILE 从指定文件中读取编辑脚本
-r, -E-E 使用扩展正则表达式
-ibak 备份文件并原处编辑
-s将多个文件视为独立文件,而不是单个连续的长文件流

#带有自动打印功能,p又再打印一遍

 # -n 选项关闭自动打印功能

#直接显示第3行

         

2.2.1 sed支持正则表达式

#将包含root的行打印出来   /root(需要匹配的内容)/p(打印)  文件名  

 #显示范围

#显示第3行往后加4行

2.2.2 匹配正则表达式

#显示b开头 和f开头中间的行

sed   -n         '/^b/,/^f/p'                 /etc/passwd基本格式     '/表达式1/,/表达式2/p' (不要忘记打印)p  文件名

2.2.3 奇数偶数表示

奇数

偶数

2.2.4 -d选项删除

将第三行删除

2.2.5 -i修改文件内容

常常用于修改配置文件
-i   与  -i.bak

2.2.6  -a 追加

第二行后追加cyw

  \表示空格    \n 表示换行

2.3 搜索替代

s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###

替换修饰符:

g行内全局替换
p显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写

 

#&指代之前的内容

 

#分组 s//代表查找替换  ()代表分组    \1 代表留下的组

 

2.4 变量

 

http://www.lryc.cn/news/131378.html

相关文章:

  • 微信消息没通知iphone can‘t show notifications
  • Linux Kernel:pid与namespace
  • 开源后台管理系统Geekplus Admin
  • 【MATLAB基础绘图第16棒】绘制热图(Heatmap)
  • 数据库--SQL关键字的执行顺序
  • 如何优雅地处理Java多线程编程中的共享资源问题,以确保线程安全和高性能?
  • 每天一道leetcode:剑指 Offer 64. 求1+2+…+n(中等递归)
  • 服务器安装centos7踩坑
  • Java | IDEA中 jconsole 不是内部或外部命令,也不是可运行的程序
  • 将Swift Package构建为通用二进制文件 Universal Binary
  • 正则表达式:贪婪与非贪婪模式
  • UVa247 Calling Circles(Floyd warshall算法)
  • Java项目之基于ssm框架的社区生活超市管理系统(附源码)
  • Android 实现录音功能
  • drawio导出矢量图
  • 关于angular router-outlet
  • 设计模式详解-桥接模式
  • 设计模式—— 单一职责原则
  • 嵌入式系统中如何选择RTC电池?
  • 56 | 国内游戏直播竞品分析
  • STM32 CubeMX (第一步Freertos任务管理:创建、删除、挂起、恢复)
  • 0101读写分离测试-jdbc-shardingsphere-中间件
  • sqlite3将词典导入数据库
  • 浏览器 - 事件循环机制详解
  • 析构函数中不应该抛出异常(摘录)
  • Windows定时任务计划无法显示任务程序界面的问题解决
  • 【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求
  • Python学习笔记_进阶篇(二)_django知识(一)
  • 【hive】hive中row_number() rank() dense_rank()的用法
  • 【云原生】【k8s】Kubernetes+EFK构建日志分析安装部署