当前位置:网站首页>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工具.
边栏推荐
- Alibaba and Ant Group launched OceanBase 4.0, a distributed database, with single-machine deployment performance exceeding MySQL
- 直播课堂系统09--腾讯云点播管理模块(一)
- 【PCBA方案设计】蓝牙跳绳方案
- LeetCode-498-对角线遍历
- 如何保护 LDAP 目录服务中的用户安全?
- JVM classic fifty questions, now the interview is stable
- 查询:复杂查询的语法和使用例——《mysql 从入门到内卷再到入土》
- 论配置化系统的配置
- B. Trouble Sort
- 用示波器揭示以太网传输机制
猜你喜欢
【PCBA scheme design】Bluetooth skipping scheme
Play RT-THREAD of doxygen
Huawei router clock near the drainage experiment (using stream strategy)
什么是Jmeter?Jmeter使用的原理步骤是什么?
管理员必须知道的RADIUS认证服务器的部署成本
Using SylixOS virtual serial port, serial port free implementation system
【vulhub】MySql身份认证绕过漏洞复现(CVE-2012-2122)
我的世界整合包 云服务器搭建方法(ECS)
Likou 221 questions, the largest square
LeetCode-36-二叉搜索树与双向链表
随机推荐
黑猫带你学Makefile第12篇:常见Makefile问题汇总
管理员必须知道的RADIUS认证服务器的部署成本
找的笔试题的复盘(一)
2022.8.8好题选讲(数论场)
玩转doxygen 之RT-THREAD
突破次元壁垒,让身边的玩偶手办在屏幕上动起来!
深度学习之 12 循环神经网络RNN2
C. Social Distance
shell(文本打印工具awk)
变量和它的特性——《mysql 从入门到内卷再到入土》
How to secure users in LDAP directory service?
Exploration and practice of the "zero trust" protection and data security governance system of the ransomware virus of Meichuang Technology
JVM classic fifty questions, now the interview is stable
数据标注太昂贵?这个方法可以用有限的数据训练模型实现基于文本的ReID!
卡片盒笔记法的操作步骤
【PCBA方案】电子握力测试仪方案she‘ji
Mark!画出漂亮的神经网络图!神经网络可视化工具集锦搜集
INSERT:插入操作语法&使用例——《mysql 从入门到内卷再到入土》
ACM模板笔记:最长不下降/上升子序列
LeetCode-498-对角线遍历