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

目录

[1 简介](#1 简介)

[1.1 sed编辑器的工作流程](#1.1 sed编辑器的工作流程)

[2 sed](#2 sed)

[2.1 基本用法](#2.1 基本用法)

[2.2 sed基本格式](#2.2 sed基本格式)

[2.2.1 sed支持正则表达式](#2.2.1 sed支持正则表达式)

[2.2.2 匹配正则表达式](#2.2.2 匹配正则表达式)

[2.2.3 奇数偶数表示](#2.2.3 奇数偶数表示)

[2.2.4 -d选项删除](#2.2.4 -d选项删除)

[2.2.5 -i修改文件内容](#2.2.5 -i修改文件内容)

[2.2.6 -a 追加](#2.2.6 -a 追加)

[2.3 搜索替代](#2.3 搜索替代)

[2.4 变量](#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 |
| -f | FILE 从指定文件中读取编辑脚本 |
| -r, -E | -E 使用扩展正则表达式 |
| -i | bak 备份文件并原处编辑 |
| -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 变量

相关推荐
2601_9594779111 分钟前
Vatee:面向成熟用户的综合服务评估
大数据·人工智能·安全·ux
城南观北21 分钟前
Ubuntu 解决 apt 锁占用 + 安装 net-tools + 搭建 SSH 远程连接(保姆级实操)
linux·ubuntu·ssh
国科安芯22 分钟前
基于RISC-V架构的商业航天级MCU国产化技术路径与产业生态研究
网络·分布式·单片机·嵌入式硬件·架构·risc-v·安全性测试
xingyuzhisuan25 分钟前
从零精通GPU服务器模型部署:标准化流程与性能调优实战
运维·服务器·人工智能
做个文艺程序员28 分钟前
第10篇(终篇):生产级 ES 运维——监控、备份、安全与故障排查完全手册
运维·安全·elasticsearch·es备份恢复·es升级·集群故障排查
s_w.h33 分钟前
【 linux 】文件管理与重定向
linux·运维·服务器
烟雨江南aabb38 分钟前
Docker第一弹 Docker是什么?
运维·docker·容器
Cloud_Shy61840 分钟前
Linux 系统定时任务 Cron(d) 服务应用实践(二:生产环境下的用户定时任务)
linux·运维·服务器·centos·云计算
Saniffer_SH40 分钟前
【每日一题】不只是点亮画面:UniGraf 如何把 HDMI/DP 接口问题拆成可定位、可复现、可自动化验证的测试流程?
运维·人工智能·测试工具·fpga开发·性能优化·自动化·压力测试
HackTwoHub1 小时前
AI赋能Chrome MCP × JS逆向Skill自动化JS逆向挖洞
javascript·人工智能·chrome·安全·web安全·网络安全·自动化