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

文本三剑客——sed

时间:2023-11-28 19:00:11浏览次数:30  
标签:文件 提取 第三行 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还可以打印两个正则表达式之间的行

比如这里我想提取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,内容,expect,文本,三剑客
From: https://www.cnblogs.com/chenjw0608/p/17862716.html

相关文章

  • SED+免交户
    SED读取一行处理一行在不打开文件的情况下去修改文件内容sed'语法'sed自己的语法语法:输出哪些行,留下哪些语法:范围+操作打印屏幕上(不写范围表示全文)地址+命令有自动打印功能sed[option]选项)命令的选项-n#关闭自动打印-r#使用扩展正则-e#以什么开头-f......
  • 文本向量化
     词袋模型,词嵌入等等等等。都需要构建词汇表,个人能力是很有限,根本不可能构建一个效果好的。所以我不使用这些小型效果也不好,得到96维度的向量。 直接使用dmis-lab/biobert-v1.1地址:dmis-lab/biobert-v1.1·HuggingFace#Loadmodeldirectlyfromtransformersimport......
  • 输入框、文本域中内容底部有红色波浪线,如何去掉?vue2 html
    取消检查就不会有红色波浪线添加属性:spellcheck="false"1<el-input2type="textarea"3:autosize="{minRows:2,maxRows:40}"4placeholder="请输入内容"5v-model.trim="text"......
  • 《Visual Analytics for RNN-Based Deep Reinforcement Learning》
    摘要准备开题报告,整理一篇2022年TOP论文。论文介绍该论文是一篇2022年,有关可视化分析基于RNN的深度强化学习训练过程的文章。一作是JunpengWang,作者主要研究领域就是:visualization,visualanalytics,explainableAI。作者主页:https://junpengw.github.io/#/主要工......
  • 7 Mutilmodal Feature Extraction and Attention-based Fusion for Emotion Estimatio
    摘要。人机交互技术的不断进步,使得情感的计算成为可能。在本文中,我们介绍了我们提交给CVPR2023竞赛的情感行为分析在野外(ABAW)。人机交互中的情感分析应尽可能从多维度入手,填补单个不完善的情感通道,最后通过拟合多个结果确定情感倾向。因此,我们利用了从比赛数据集中不同长度的视......
  • TTS文本转语音工具
    微信小程序:配音神器Pro(抖音/快手都是用的里面的声音)主流云TTS:微软Azure、阿里、腾讯、讯飞;一、Toolfkhttps://www.toolfk.com/tools/online-text2video.html二、迅捷文字转语音三、微软文字转语音四、当贝文字转语音五、喜马拉雅云剪辑 五、nopapphttp://www.nopapp.com......
  • C++ 查找文本文件中字符串是否存在
    简介查找文本文件中字符串是否存在代码#include<iostream>#include<fstream>#include<vector>#include<string>usingnamespacestd;boolSearchString(stringfilePath,stringstrF){vector<string>lines;stringline;ifst......
  • CF1901E Compressed Tree(树dp)
    Problem题目地址Solution来自fcy大佬的思路记\(f_u\)表示假定以\(u\)为根的子树,在压缩后,(子树内的某一个点(包括\(u\)))可以向外(除\(u\)为根的子树外所以点的集合)连一条边时的最大\(sum\)。换言之,我们把树拆成以\(u\)为根的子树(记作\(Tree_u\))和非\(Tree_u\)部分。而......
  • 正则表达式与文本三剑客——grep awk sed
    正则表达式shell:/bin/bash正则表达式:匹配的是文章中的字符通配符:匹配的是文件名?任意单个字符元字符:不表示本来的含义,在正则表达式中有特殊含义的字符正则表达式元字符的使用:自己写很容易,读取别人的很困难正则表达式想用好:记忆元字符的含义多用正则表达式分为:......
  • Caused by: io.debezium.DebeziumException: java.sql.SQLSyntaxErrorException: Acce
    1.情景展示如上图所示:在使用debezium读取mysql数据操作日志时(io.debezium.connector.mysql.MySqlConnector),报错:Causedby:io.debezium.DebeziumException:java.sql.SQLSyntaxErrorException:Accessdenied;youneed(atleastoneof)theRELOADprivilege(s)forthis......