Linux系统Shell脚本第六章:文件三剑客之sed
Shell编程三剑客之sed
前言
sed工具与之前讲过的grep以及awk合称为Linux三剑客,它在我们Linux系统的操作管理中是被大量使用的文本处理工具,所以学习sed是绝对必要的。
一、Sed编辑器
(1)Sed概述
sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。
sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。
(2)Sed工作流程
sed 的工作流程主要包括读取、执行和显示三个过程。
读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行。
显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
注意:默认情况下所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变,除非是用重定向存储输出。
(3)Sed基本语法
基本格式:
sed [选项] ‘操作’ 参数
sed [选项] -f scriptfile 参数
- 常用选项
  - 常用操作
 
 - 二、Sed用法示例- (1)Sed输出指定行- [root@youzi home]# sed -n ‘p’ passwd #输出所有行 
 [root@youzi home]# sed -n ‘3p’ passwd #输出第三行
 [root@youzi home]# sed -n ‘3,5p’ passwd #输出三到五行
 root@youzi home]# sed -n ‘p;n’ passwd #输出所有奇数行
 [root@youzi home]# sed -n ‘n;p’ passwd #输出所有偶数行
 [root@youzi home]# sed -n ‘1,5{p;n}’ passwd #输出1到5行间的奇数行
 [root@youzi home]# sed -n ‘10,${n;p}’ passwd #输出第10行以后的偶数行
 [root@youzi home]# sed -n ‘2,+3p’ passwd #输出从第2行开始的连续的三行
 ————————————————
 版权声明:本文为CSDN博主「羽翔青空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
 原文链接:https://blog.csdn.net/qq1356059950/article/details/124653502
      - 配合正则表达式输出指定行
 - [root@yanjing home]# sed -n ‘/the/p’ qwe.txt #输出包含the的行 
 [root@yanjing home]# sed -n ‘2,/the/p’ qwe.txt #输出从第二行开始往后第一个包含the的行为止的所有内容
 [root@yanjing home]# sed -n ‘/the/=’ qwe.txt #输出所有包含the的所有行的行号
 [root@yanjing home]# sed -n ‘/^PI/p’ qwe.txt #输出以PI开头的行
 [root@yanjing home]# sed -n ‘/[0-9]$/p’ qwe.txt #输出以数字结尾的行
 [root@yanjing home]# sed -n ‘/<wood>/p’ qwe.txt #输出包含wood单词的行  - (2)插入符合条件的行
- [root@yanjing home]# sed ‘/the/i 下面有the’ qwe.txt #在含有the的行的前面添加一行内容 
 [root@yanjing home]# sed ‘/the/a 上面有the’ qwe.txt #在含有the的行的后面添加一行内容
 [root@yanjing home]# sed ‘3a在第三行后面添加’ qwe.txt #正赛第三行后面添加一行内容
 “a”表示在当前行的后面一行添加
 当添加多行内容时,可以用\n分隔开,表示换行  - (3)删除符合条件的行
- [root@youzi home]# sed ‘s/the/THE/’ qwe.txt #将每行中的第一个the替换为THE 
 [root@youzi home]# sed ‘s/l/L/2’ qwe.txt #将每行中的第二个l替换成L
 [root@youzi home]# sed ‘s/l/L/g’ qwe.txt #将文件中的所有l都替换成L,g时全局替换
 [root@youzi home]# sed ‘s/l/ /g’ qwe.txt #将文件中的所有l都替换成空字符
 [root@youzi home]# sed ‘s/^/#/’ qwe.txt #将所有行的行首插入#
 [root@youzi home]# sed ‘/the/s/^/#/’ qwe.txt #在所有包含the的行的行首插入#
 [root@youzi home]# nl qwe.txt |sed ‘2,5s/the/THE/g’ #将三到五行中所有的the都替换成THE
 [root@youzi home]# sed ‘/the/o/O/g’ qwe.txt #将所有包含the的行中的o都替换成O        - 先备份再修改数据
 
 - (4)迁移符合条件的文本- 常用参数
  - [root@youzi shell]# sed ‘/the/{H;d};$G’ qwe.txt #将包含the的行剪切值行尾,{;}用于多个操作,H复制,d删除,{H;d}先复制,再删除 
 [root@youzi shell]# sed ‘1,5{H;d};14G’ qwe.txt #将1-5杠内容剪切到17行以后
 [root@youzi shell]# sed ‘/the/w 666.txt’ qwe.txt #将包含the的行复制另存为另一个文件
 [root@youzi shell]# sed ‘/the/r 666.txt’ qwe.txt #将文件666.txt的内容添加到所有包含the的行后
 [root@youzi shell]# sed ‘2aNew’ 666.txt #在第二行插入一行新内容
 [root@youzi shell]# sed ‘/the/aNew’ 666.txt #在所有包含the的行后插入一行新内容
 [root@youzi shell]# sed ‘2aNew\nNew2’ 666.txt #在第三行后插入多行内容      - 总结- sed的概述,一些基本用法
- sed常用的选项参数
- sed的一些应用示例
 
 
 
 
 
Linux系统Shell脚本第六章:文件三剑客之sed的更多相关文章
- Linux系统Shell脚本编程
		1. shell脚本概念:C语言编写的.命令解释器.编程语言. 是用户使用linux的桥梁. shell脚本语言非常擅长处理文本类型的数据. 2. shell脚本作用:自动化管理.监控管理.日志数据处 ... 
- Linux系统——shell脚本
		shell脚本编程 作用:通过命令行解析的方式,自动执行设定好的程序或命令代码.(若将脚本挂到定时任务中,就会自动在非工作时间里自动触发执行程序) Shell脚本文件以“.sh”结尾 规范的Shell ... 
- Linux系统——shell脚本应用示例
		传入一个网段地址,自动找出本网段内存活的IP地址.2,将存活的IP地址当作密码来创建Linux用户,用户名格式为:你的名字_数字 3,有几个存活IP地址,就自动创建几个用户 4,最后将创建的用户名 ... 
- Linux 用 shell 脚本 批量 导入 csv 文件 到 mysql 数据库
		前提: 每个csv文件第一行为字段名 创建的数据库字段名同csv 文件的字段名 1. 批量导入 多个 csv 文件 for file in ./*.csv;do mv $file tablename. ... 
- linux服务器批量部署应用系统shell脚本(Tomcat/jetty)
		linux服务器批量部署应用系统shell脚本: 1.请更换代码内的服务器地址(Tomcat或jetty服务器) serverRoot=/home/undoner/java_tool/apache-t ... 
- Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间
		Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ... 
- Linux:从windows到linux的shell脚本编码和格式
		从windows到linux的shell脚本编码和格式问题 异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh start.sh,时会报Command not found等等的错误, ... 
- Linux/Unix shell 脚本中调用SQL,RMAN脚本
		Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ... 
- Linux常用Shell脚本珍藏【转载】
		我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运维常用的脚本.如何学好脚本,最关键的 ... 
- Centos7下crontab+shell脚本定期自动删除文件
		问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任 ... 
随机推荐
- HelloWorld程序的代码编写-Hello World的编译运行
			HelloWorld程序的代码编写 程序开发步骤说明 开发环境已经搭建完毕,可以开发我们第一个Java程序了. Java程序开发三步骤:编写.编译.运行. 编写Java源程序 1. 在 d:\day0 ... 
- Vue3 企业级优雅实战 - 组件库框架 - 10 实现组件库 cli - 下
			上文创建了一堆 utils.component-info,并实现了新组件模块相关目录和文件的创建.本文继续实现后面的内容. 1 组件样式文件并导入 在 src/service 目录中创建 init-s ... 
- 普冉PY32系列(五) 使用JLink RTT代替串口输出日志
			目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ... 
- 01Python变量的使用
			Python变量 变量的定义 变量:在程序运行过程中,值会发生变化的量 把程序运算的中间结果临时存到内存里,以备后面的代码继续调用,这几个名字的学名就叫做"变量". 变量的作用 我 ... 
- 【Oculus Interaction SDK】(十)在 VR 中使用手势识别
			前言 前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了.本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发.当然,不排除我文章刚写完 SDK 又变 ... 
- 【KAWAKO】在windows上用CMake和MinGW编译c++工程
			目录 安装CMake 安装MinGW 编写CMakeLists.txt 编译一条龙 安装CMake 在网上随便找个教程照着安装就行了,不再赘述. 安装MinGW 参考这篇博客.从MinGW官网下载的安 ... 
- 集合类再探:不可变类的好处,Collector接口详解,使用内部迭代
			集合类再探 注:本文使用的pom依赖见文末. 集合类的基础 - Iterable.Iterator java语言层面支持对实现了Iterable接口的对象使用for-each语句.Iterator可以 ... 
- 新一代自动化利器-DrissionPage
			熟悉的小伙伴知道我的工作有相当一部分是自动化,在探索相关的技术上一直没停下脚步,我痛恨selenium.playwright的非标准内核机制,也曾对clicknium引进了新的问题无语,以及接口爬取数 ... 
- 分享手机上一款超多功能的APP(含428个功能):宇宙工具箱
			无意中在网上发现一款功能超多的安卓APP,作者宣称是三百多个功能,但是目前统计已经有四百多个,而且不包含网友分享的上千功能. 这款工具的名称叫:宇宙工具箱. 它的功能主要包含10个类别: 图片工具 日 ... 
- CCRD_TOC_2008年第1期
			中信国健临床通讯 2008年第1期 目 录 类风湿关节炎 1 一种新型.实用的RA活动度评估方法:完成评估只需三分钟 Fleischmann RM, Schiff MH, Keystone EC, ... 
