当前位置:网站首页>xshell (sed command)
xshell (sed command)
2022-08-10 21:52:00 【Guannan cattle x people】
在Linux/UNIX 系统中包含很多种类的文本处理器或文本编辑器,其中包括我们之前学习过的VIM 编辑器与grep 等.而 grep,sed,awk 更是Shell 编程中经常用到的文本处理工具, 被称之为Shell 编程三剑客
sed概述及工作原理
sed 工具
sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行.
sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务.
sed 依赖于正则表达式
sed 的工作流程
主要包括读取、执行和显示三个过程.
读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space).
执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行.
显示:发送修改后的内容到输出流.在发送数据后,模式空间将会被清空.
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完.
注:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出
sed 命令常见用法
通常情况下调用 sed 命令有两种格式,如下所示.其中,“参数”是指操作的目标文件, 当存在多个操作对象时用,文件之间用逗号“,”分隔;而 scriptfile 表示脚本文件,需要用“-f” 选项指定,当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件.
sed 命令格式
sed [选项] '操作' 参数
常见的 sed 命令选项
-e | 表示用指定命令或脚本来处理输入的文本文件 |
-f | 表示用指定的脚本文件来处理输入的文本文件 |
-h | 或--help 显示帮助 |
-n | Indicates that the result after processing is displayed |
-i | 直接编辑文本文件 |
-i.bak | Backup text files |
-r,-E | 使用扩展正则表达式 |
-s | 将多个文件视为独立文件,而不是单个连续的长文件流 |
sed命令的常用操作
“操作”用于指定对文件操作的动作行为,也就是 sed 的命令
a | 增加,在当前行下面增加一行指定内容 |
c | 替换,将选定行替换为指定内容 |
d | 删除,删除选定的行 |
i | 插入,在选定行上面插入一行指定内容 |
p | 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容 |
s | 替换,替换指定字符 |
y | 字符转换 |
案例
以test.txt文件内容为例
打印文本内容
打印显示第2行
打印显示第1行到第5行内容
All odd lines of output file content
输出所有偶数行
输出第10行至文件尾之间的偶数行
显示第2行内容
/the/ 包含 显示包含the的行
打印显示第4row starts withthe的行
打印包含the的行号
Display contains with PI开头或以The开头的行
Displayed with 数字0-9结尾的行
Printing shows containswood的行wood是整体
nl Print out the number of lines in the file(空行不显示)
显示行号,并删除第4行
删除第1-5行,并显示行号
删除包含有the的行并显示行号
查看文件内容,and displays Delete witha-z开头的行
Remove blank lines and display
删除以 . 结尾的行
替换符合条件的文本
在使用 sed 命令进行替换操作时需要用到 s(字符串替换)、c(整行/整块替换)、y
(字符转换)命令选项,常见的用法如下所示.
将每行中的第一个the替换成大写THE
将/etc/passwd下/bin/bash 替换成/sbin/nologin
打印文件内容,将第2行bin替换成zmj并将行尾的/named替换成zmj
将第2行中的第2个l 替换成L
the contents of the filethe 替换成THE g:全局替换
Global replacement will beoReplace with blank lines
sed -i.bak Back up modified files
sed -i 修改文件内容,关闭增强功能
迁移符合条件的文本
在使用 sed 命令迁移符合条件的文本时,常用到以下参数
H | 复制到剪贴板 |
g G | 将剪贴板中的数据覆盖/追加至指定行 |
w | 保存为文件 |
r | 读取指定文件 |
a | 追加指定内容 |
l i | 忽略大小写 |
将包含theCopy and paste the line to the end of the line
将第1行至第5Copy and paste the line to the first14行后
将包含theline specified to2.txt文件中
Add hostname to includetheunder each line
在第7Append the specified content to the bottom of the linenb
在包含theAppend the specified content below the linezmj
在第3Append the specified content below the line \n:表示换行
使用脚本编辑文件
使用 sed 脚本将多个编辑指令存放到文件中(每行一条编辑指令)
将第1-6Copy and paste the line to the first16行后
通过“-f”选项来调用.例如执行以下命令即可将第 1~5 行内容转移至第 16 行后.
sed 直接操作文件示例
编写一个脚本,用来调整 vsftpd 服务配置,要求禁止匿名用户,但允许本地用户(也允许写入)
总结
sed工具,It is a powerful and simple text parsing conversion tool,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行.And some cases let us use it more proficientlysed工具.
边栏推荐
- labelme - block drag and drop events
- Kerberos认证
- 着力提升制造业核心竞争力,仪器仪表产业迎高质量发展
- 如何提高代码的可读性 学习笔记
- 每次打开chrome会跳出What's new
- 2022.8.9 Mock Competition
- In 2021 China industrial Internet security competition (competition) in fujian province and the first industry of fujian province Internet innovation competition
- 财务年报怎样翻译,为什么要选择专业翻译公司?
- 力扣221题,最大正方形
- 国内Gravatar头像的完美替代方案Cravatar
猜你喜欢
深度学习之 12 循环神经网络RNN2
Live Classroom System 09--Tencent Cloud VOD Management Module (1)
HighTec快捷键(Keys)设置位置
Rider调试ASP.NET Core时报thread not gc-safe的解决方法
The use of TortoiseSVN little turtle
Redis 性能影响 - 异步机制和响应延迟
化学制品制造业数智化供应链管理系统:建立端到端供应链采购一体化平台
Live Classroom System 08-Tencent Cloud Object Storage and Course Classification Management
什么是Jmeter?Jmeter使用的原理步骤是什么?
Likou 221 questions, the largest square
随机推荐
MySQL高级指令
管理员必须知道的RADIUS认证服务器的部署成本
【PCBA方案设计】蓝牙跳绳方案
自组织是管理者和成员的双向奔赴
异常的了解
论文解读(g-U-Nets)《Graph U-Nets》
ArcMap时间滑块功能动态显示图层数据并生成视频或动图
Intelligent scheme design - intelligent rope skipping scheme
ACM模板笔记:最长不下降/上升子序列
labelme - block drag and drop events
PROCEDURE :存储过程结构——《mysql 从入门到内卷再到入土》
卡片盒笔记法的操作步骤
DDL:ALTER 修改数据库——《mysql 从入门到内卷再到入土》
Web Reverse Lilac Garden
Redis Performance Impact - Asynchronous Mechanisms and Response Latency
如何提高代码的可读性 学习笔记
黑猫带你学Makefile第12篇:常见Makefile问题汇总
我的世界整合包 云服务器搭建方法(ECS)
华为路由器旁挂引流实验(使用流策略)
labelme-5.0.1版本编辑多边形闪退