首页 > 其他分享 >文本三剑客之一:解锁sed的强大秘籍,让文本处理轻松无忧!转载

文本三剑客之一:解锁sed的强大秘籍,让文本处理轻松无忧!转载

时间:2024-10-16 09:33:20浏览次数: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  开启免交互  开启expectexpect  捕捉  屏幕上的  关键词exp_continue   继续捕捉屏幕上的字send  发送指令interact   代表退出 expect  但是会留在新的终端expect eof 代表退出 ecpect  默认 10s后 返回旧的终端set  设置变量

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

#!/usr/bin/expect

图片

链接:https://www.cnblogs.com/chenjw0608/p/17862716.html

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

相关文章

  • 文本三剑客——sed【转】
    sed sed处理的是行sed不打开文件的情况下更改文件的内容sed[选项]...{脚本语法}文件名sed自己的语法:输出哪些行,留下哪些行语法:范围+操作sed命令的选项-i:实际修改文件内容-i.bak:实际修改前先备份原文件,会产生一个源文件.bak的文件-n:关闭自动打印-r:使用扩展正则......
  • 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现......
  • FreqFed: A Frequency Analysis-Based Approach for Mitigating Poisoning Attacks in
    FreqFed:AFrequencyAnalysis-BasedApproachforMitigatingPoisoningAttacksinFederatedLearning--FreqFed:一种基于频率分析的联邦学习中缓解中毒攻击的方法来源摘要威胁模型设计目标所用方法FreqFed总结思考来源NetworkandDistributedSystemSecurity......
  • peer closed connection in SSL handshake
    报错信息:2024/10/1110:45:13[error]11933#0:*437581086peerclosedconnectioninSSLhandshake(104:Connectionresetbypeer)whileSSLhandshakingtoupstream,client:69.69.69.8,server:127.0.0.1,request:"POST/car/lsimpleHTTP/1.1",upstre......
  • PatentGPT: A Large Language Model for Patent Drafting Using Knowledgebased Fine-
    本文是LLM系列文章,针对《PatentGPT:ALargeLanguageModelforPatentDraftingUsingKnowledgebasedFine-tuningMethod》的翻译。PatentGPT:一种使用基于知识的微调方法进行专利起草的大型语言模型摘要1引言2相关工作3提出的方法4实验5基准测试6总结......
  • HarmonyOS开发——编译报错“The reason and usedScene attributes are mandatory for
    问题现象:DevEcoStudio编译失败,提示“ThereasonandusedSceneattributesaremandatoryforuser_grantpermissions”。问题原因:从DevEcoStudioNEXTDeveloperPreview2版本开始新增规则:APP包中,所有entry和featurehap的module下的requestPermissions权限清单必须指定(......
  • Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to ma
    这个错误通常发生在使用SpringAOP时,尤其是当你尝试访问AopContext.currentProxy(),但当前代理对象不可用时。下面是一些解决此问题的建议:1.启用 exposeProxy 属性确保你的AOP配置中设置了exposeProxy属性为true。这可以在使用注解或XML配置中进行设置使用注解如......
  • Codeforces Round 977 (Div. 2, based on COMPFEST 16 - Final Round)
    目录写在前面A签到B贪心,枚举C1贪心C2贪心,枚举DDPE1/E2Kruscal重构树,树上背包写在最后写在前面补题地址:https://codeforces.com/contest/2021。上大分失败呃呃呃呃我不要上班呜呜A签到考虑仅有三个数\(a,b,c(a<b<c)\)时最优操作,手玩下发现最优操作顺序一定是......