首页 > 其他分享 >文本三剑客——sed【转】

文本三剑客——sed【转】

时间:2024-10-14 15:10:10浏览次数:7  
标签:文件 提取 第三行 sed 内容 expect 文本 三剑客

sed 

sed处理的是行

sed 不打开文件的情况下更改文件的内容

sed [选项 ] ...{脚本语法} 文件名

sed 自己的语法:输出哪些行,留下哪些行

语法:范围+操作

复制代码
sed命令的选项
-i:实际修改文件内容
-i.bak:实际修改前先备份原文件,会产生一个源文件.bak的文件
-n:关闭自动打印
-r:使用扩展正则表达式

语法字母在单引号中
-p:打印
-q:提前退出    3q  打印到第三行退出
-d:删除       3d  删除第三行
-a:后面追加    3a 第三行后面添加
-i: 上面插入    3i  第三行上面添加
-c: 替换       3c将第三行的内容替换
=:行号
复制代码

 

 sed取奇偶数

 #提取奇数行,打印第一行内容,返回第二行内容

 #提取偶数行,返回第一行内容,打印第二行内容

同时sed还可以打印两个正则表达式之间的行

比如这里我想提取b开头和f开头中间的行

#将cat的结果传给sed,sed在根据要求打印内容

如果有多个复合条件的表达式时

会在找b开的和f开头的内容后,在重新查找b开头的内容,一直找到有f开头的行,如果没有f开头的行,就全部显示

sed可以在不打开文件的情况下,修改文件的内容

 #这个文件夹中只有这10个数字

 #可以看到我们先是将源文件中的偶数行去除,然后又在第二行后追加了一个haha

搜索替代:

复制代码
标准姿势:
s/旧内容/新内容/修饰符
也可以表示为
s#旧内容#新内容#修饰符
或
s@旧内容@新内容@修饰符

修饰符:
g  行内全局替换
p  显示替换成功的行
w  将替换成功的行保存至文件中
i,I 忽略大小写 
复制代码

 替换练习

将该内容中的SELINUX=enforcing替换成SELINUX=enable

 #在更改一个文件之前,一定要记得备份,以防万一

可以使用i.bak备份文件

 #使用i.bak备份文件,会在目录中新建一个以.bak结尾的备份文件,该文件和源文件相同

 

 #打印passwd文件中含有$name的行
$name=root
-r:表示使用拓展正则表达式

分组后项引用

只有扩展正则表达式才能支持分组

 练习1:

提取网卡信息,只提取图中画圈IP地址

#.*inet:表示图中inet前的空格
#(.*):第二个.*表示IP地址,打上括号表示他为一组
#netmask.*:表示图中netmask向后的内容
#然后提取第一组内容就可以得到我们需要的IP地址

练习2:

提取图中的版本号数字部分

 #以-为分隔符提取.jar前的内容

 

练习3:

提取文件权限的数字部分

 #提取范围是第四行,提取括号内连续的4个数字

 

免交互

多行重定向

cat  >目标文件 <<eof
eof

 #可以多行同时传到指定的文件
#目标文件的位置可以在eof前,也可以在eof后

expect

可以解决shell脚本中交互的相关问题

需要下载

yum install expect -y

复制代码
#相关关键词
spawn  开启免交互  开启expect
expect  捕捉  屏幕上的  关键词
exp_continue   继续捕捉屏幕上的字
send  发送指令
interact   代表退出 expect  但是会留在新的终端
expect eof 代表退出 ecpect  默认 10s后 返回旧的终端
set  设置变量
复制代码

expect脚本不可以使用bash解释器

#!/usr/bin/expect

 转自

文本三剑客——sed - 打开方式不对 - 博客园
https://www.cnblogs.com/chenjw0608/p/17862716.html

 

标签:文件,提取,第三行,sed,内容,expect,文本,三剑客
From: https://www.cnblogs.com/paul8339/p/18464275

相关文章

  • jar包内替换依赖jar后无法启动,错误日志:It has been compressed and nested jar files
    jar包内替换依赖jar后无法启动,错误日志:Ithasbeencompressedandnestedjarfilesmustbestoredwithoutcompression.ruoyi、springboot、java、jar、libs、压缩背景某服务jar包足足90MB有余,远程传输太慢,目前在改动的是其中的某子jar(项目内部依赖,另一个jar)。之前......
  • jar包内替换依赖jar后无法启动,错误日志:It has been compressed and nested jar files
    jar包内替换依赖jar后无法启动,错误日志:Ithasbeencompressedandnestedjarfilesmustbestoredwithoutcompression.ruoyi、springboot、java、jar、libs、压缩背景某服务jar包足足90MB有余,远程传输太慢,目前在改动的是其中的某子jar(项目内部依赖,另一个jar)。之前......
  • Windows Server 2025 OVF, released Sep 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2025OVF,releasedSep2024(sysin)-VMware虚拟机模板2024年9月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2025-ovf/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现......
  • 图像文本对比模型实践——CLIP——2021
    图像文本对比模型实践——CLIP——20211.论文启发点详细内容(文+图)clip原理的极简版:用图像编码器把图像编码成向量a;用文本编码器把文本编码成向量b;计算a·b,如果a和b来自一对儿配对的图和文字,则让a·b向1靠近;如果a和b来自不配对儿的图和文字,则让a·b向......
  • Qt开发技巧(十六):文本框的光标处理,数据库的int在视图中展示问题,工程文件中区分系统及硬
    继续讲一些Qt开发中的技巧操作:1.文本框的光标处理正常情况下我们在文本框中输入,光标会一直伴随着我们的输入指向最后,有点像链表的next指针,但有时候文本框中的内容过长,而我们想要主动设置下将光标移到最前面的时候,可以用下面方法。//下面三种方法都可以//1.样式表方式设......
  • Web前端开发入门学习笔记之CSS 39-40 --新手超级友好版- 文本颜色字体篇
       Foreword写在前面的话: 大家好,我是一名刚开始学习HTML的新手。这篇文章是我在学习html过程中的一些笔记和心得,希望能和同样在学习HTML的朋友们分享。由于我的知识有限,文章中可能存在错误或不准确的地方,欢迎大家在评论区提出建议和指正。我非常期待大家的反馈,以便我能......
  • FreqFed: A Frequency Analysis-Based Approach for Mitigating Poisoning Attacks in
    FreqFed:AFrequencyAnalysis-BasedApproachforMitigatingPoisoningAttacksinFederatedLearning--FreqFed:一种基于频率分析的联邦学习中缓解中毒攻击的方法来源摘要威胁模型设计目标所用方法FreqFed总结思考来源NetworkandDistributedSystemSecurity......
  • 2006-2023年上市公司社会责任报告、ESG报告文本(TXT)
    2006-2023年上市公司社会责任报告、ESG报告文本(TXT)1、时间:2006-2023年2、范围:A股上市公司3、样本量:14279份4、说明:上市公司社会责任报告是企业对外公布的一份关于其社会责任实践和成果的详细文件,涵盖环境保护、社会贡献和公司治理等方面的表现。通常包含公司在减少环境影响......
  • 行人重识别——基于文本描述的行人检索与查找查询对象
    介绍人的重新识别,即搜索人的图像,在许多方面都有需求,如从安全摄像机中寻找嫌疑人或丢失的儿童。其中,基于文本的人的重新识别,即不搜索显示与输入图像相同的人的图像,而是从文本中搜索显示与之匹配的人的图像,已经引起了很多人的注意。在基于文本的人的再识别任务中,主要的方法......
  • InternVid:用于多模态视频理解与生成的大规模视频-文本数据集 | ICLR Spotlight
    InternVid 是一个开源的大规模视频-文本数据集,旨在促进视频理解和生成任务的发展,由上海人工智能实验室与南京大学、中国科学院等单位联合发布,相关的工作已经被ICLR2024接收。它包含超过700万个视频,总时长近76万小时,并附带详细的文本描述。InternVid的发布将推动文本-视频......