文本三剑客——sed【转】

news/2024/10/14 15:21:59

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71461.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Qt/C++编写的mqtt调试助手使用说明

一、使用说明第一步,选择协议前缀,可选mqtt://、mqtts://、ws://、wss://四种,带s结尾的是走ssl通信,ws表示走websocket通信。一般选默认的mqtt://就好。 第二步,填写服务所在主机地址,可以是IP地址也可以是网址,只要真实存在的就行。 第三步,填写通信所用端口号,mqtt…

springboot~ConstraintValidatorContext验证两个字段内容相同

场景 我在开发修改密码功能,通过原密码和新密码及确认新密码,希望通过ConstraintValidator这个方式来校验新密码和确认新密码,规则是这两个密码需要是相同的。 参考文档https://github.com/micronaut-projects/micronaut-core/issues/3243 https://stackoverflow.com/questi…

制造业单项冠军 | 麦澜德如何用CRM管业务,做到“专精特新” ?

南京麦澜德医疗科技股份有限公司,股票代码:688273.SH(以下简称:麦澜德)成立于2013年,是国内女性全生命周期物理康复干预技术解决方案提供商。 公司产品广泛应用于妇产、盆底康复、生殖康复、泌尿肛肠、体检等医疗健康领域。荣获工信部专精特新小巨人企业、苏南潜在独角兽铜…

PyQt5 使用 aiohttp 发送异步请求

PyQt5 使用 aiohttp 发送异步请求 本文使用PyQt5演示,如何结合aiohttp库,发送异步请求 代码结构 本文中全部代码全在test_async_request.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重复显示出来,需要看完整代码的,可直接移步到末尾。 需要安装PyQt5,…

华为 OD 的职级与薪资。。

大家好,我是R哥。 之前分享了一篇《冲进数字马力了!真滴香!!》,这是大厂内包,今天说说华为 OD,一种不同于普通外包的高级外包。 华为 OD,我们面试辅导也弄了不少人进去,很多小伙伴纳闷华为 OD 和华为正编、华为外包有什么区别? 一提到外包,可能大多数人都会嗤之以鼻…

HyperMesh基础教程:概述与有限元分析简介

1.1 HyperMesh 概述 本节将介绍有限单元法基本原理,HyperMesh 软件基本功能及界面介绍,获取在线帮助等内容。 1.1.1 有限元分析方法简介 有限单元法(FEM)是一种可以精确预测复杂结构在外界载荷作用下响应的方法,该数值方法起源于上世纪 50 年代。在有限单元法出现之前,验…

测试一下博客园的xss攻击防御,无恶意

★~!@#$%^&*()_+<>,./?;"[]{}- ★%3Cinput /%3E ★%3Cscript%3Ealert(XSS1)%3C/script%3E ★ ★ ★<input/ ★ ★ ★ ★javascript:alert(/xss5/) ★javascript:alert(/xss6/) ★ ★ ★<img src="#"/**/onerror=alert(/xss9/) width=100> ★…

使用 acme.sh 生成免费 90 天的 SSL 泛域名证书

原文地址求你点进去看,给自己的博客加加热度 https://typecho.hanzhe.site/archives/13.htmlacms.sh 是 Github 上开源的一款 SSL 证书申请工具,该工具安装配置完成后可帮我们申请免费 SSL 证书,并通过定时任务实现证书自动续期,理论上配置一次终生实用,官方有提供了中文文…