[Linux ] sed文本处理和免交互

一、sed

1.1 sed是什么

sed 是一种流编辑器(stream editor),用于对文本数据进行文本转换和处理。它通常被用于在命令行中执行文本编辑任务,可以对输入的文本进行搜索、替换、删除等操作,并将结果输出。sed 是一个非交互式的文本处理工具,它按行逐步处理输入流的数据。

1.2 基本用法

格式:
sed [选项] '语法' [标准输入]
sed选项
选项含义
-n关闭自动打印
-i实际修改文本的内容
-r显示扩展正则表达式
-i.bak实际修改前先备份源文件
-e多点编辑

注意:

-ir 不支持
-i -r 支持
-ri   支持

-ni   会清空文件

 默认打印已输入的内容

查看文件内容

 重定向

管道符

 1.3 搜索替代

s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w   /PATH/FILE 将替换成功的行保存至文件中
I,i   忽略大小写

 简单用法

高级用法 

 分组查找替换

格式
sed 's//\/'

 分组后向引用

提取ens33的IP地址

 提取文件的权限(要求数字)

提取网卡名

echo /etc/sysconfig/network-scripts/ifcfg-ens33 | sed -n 's@.*/\([^/]*\)$@\1@p'
echo "/etc/sysconfig/network-scripts/ifcfg-ens33"|sed -nr 's#^.*\/(.*)#\1#p'
echo /etc/sysconfig/network-scripts/ifcfg-ens33 |sed -nr 's@^(.*)/([^/]+)@\2@p'

 提取版本号

用sed提
[root CXK /opt] cat test |sed -rn 's/.*-(.*).jar/\1/p'

用grep提
cat test |grep -e "[0-9]\+\."

 1.4 脚本格式

sed ' '单引号里面要写脚本

脚本格式如下
1. 不给地址:对全文进行处理(比如行号)
2. 单地址:#:指定的行,$:最后一行/pattern/:被此处模式所能够匹配到的每一行,正则表达式
3. 地址范围:#,#     #从#行到第#行,3,6 从第3行到第6行#,+#   #从#行到+#行,3,+4 表示从3行到第7行/pat1/,/pat2/    第一个正则表达式和第二个正则表达式之间的行#,/pat/  从#号行为开始找到 pat为止 /pat/,#  找到#号个pat为止
4. 步进:~1~2 奇数行2~2 偶数行
sed -n 'n;p' testfile1		#打印偶数行
ed -n '2,${n;p}' testfile1
字母语法
符号含义
p手动打印
q提前退出
d删除
a后面追加
i上面插入
c替换
!取反
=显示行号

选项关闭自动打印功能

 直接显示第三行

显示最后一行

 正则表达式

显示范围

 

匹配两个正则表达式之间的行

基本格式     '/表达式1/,/表达式2/p' (不要忘记打印)p  文件名

 显示从几点几分到几点加分的日志

sed '/10:40/,/11:30/p' /var/log

删除

 

追加

 

取反

 1.5 变量

 

1. 6 修改网卡名

vim /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
#GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0"
#修改这行
GRUB_DISABLE_RECOVERY="true"sed -ri.bak '/^GRUB_CMDLINE_LINUX/s#(.*)"$#\1 net.ifnames=0"#' /etc/default/grub sed -ri.bak '/^GRUB_CMDLINE_LINUX/s#"$#net.ifnames=0"#' /etc/default/grubgrub2-mkconfig -o /boot/grub2/grub.cfg 

二、免交互

2.1 多行重定向

cat >test <<tof

tee <<eof

2.2 expecp

 要先安装expect软件

rpm -q expect
yum -y install ecpect
格式
expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]
脚本格式
#!/usr/bin/expect
spawn #开启免交互 开启expect
expect #捕捉屏幕上的关键字
exp_continue #继续捕捉屏幕上的字
send #发送指令
insteract #代表退出expect但是会留在新终端
expect eof 代表退出expect ,默认保留10s然后退出

 实验1:

验证

 

实验2: 

总结:

1.sed 命令是一个流编辑器,可以逐行读取文件,也可以执行命令操作,因此如果文件过大,有必要先将其分割,然后再传递给 sed 进程。

2.sed -r 是正则表达式"Ⅾ{n}Ⅾ{n,m}Ⅾ"的扩展,去掉了"Ⅾ"。

3.使用 -i 命令时,一定要先备份(尤其是重要文件)或做实验,确保没有错误后再使用 -i。

4.sed 命令集中于四种功能--添加、删除、更改和检查,在脚本中用于更改设置或添加重要文件时特别有效。

5.交互式操作对用户实施单一设置很有用,但在面对批量配置时需要脚本访问免交互类型的脚本来解决其实施问题。

6.对于检查工具的使用,应修改脚本解释器语句,或使用嵌入式(但不适合 ssh、su 等能够改变运行环境的嵌入式交互场景命令)。

7.编写无交互脚本,需要首先考虑交互过程中所有可能的交互要素,以保证脚本的实用性和完整性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.点赞 + 我收到的赞

1.点赞 点赞&#xff1a;支持对帖子、评论点赞&#xff1b;第1次点赞&#xff0c;第2次取消点赞首页点赞数量&#xff1a;统计帖子的点赞数量详情页点赞数量&#xff1a;统计点赞数量、显示点赞状态 1.1 生成 redis 工具类 将数据存入到 redis 中&#xff0c;以 key 为关键&…

Spring Boot 整合RabbitMQ

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑不确定性的火电发电商现货-深度调峰市场优化决策》

标题涉及到电力行业的领域&#xff0c;尤其是火电发电商在电力市场中面对深度调峰需求时的决策问题。下面是对标题的解读&#xff1a; 考虑不确定性&#xff1a; 这指的是在制定优化决策时&#xff0c;考虑到环境的不确定性&#xff0c;可能包括但不限于电力市场的价格波动、发…

算法—双指针

双指针算法可以帮忙把时间复杂度降低一个维度&#xff0c;即原本O&#xff08;n2&#xff09;降为O(n)&#xff1b;将O(n)降为O(1) 移动零 移动零 题目解析 将所有0移动到末尾保持非0元素相对顺序对数组进行原地操作&#xff08;不开辟额外空间&#xff09; 算法原理 数组…

等保——密评技术要求

密评简介 密评定义&#xff1a;全称商用密码应用安全评估, 是指对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用的合规性、正确性、有效性进行评估。密评对象&#xff1a;重要信息系统、关键信息基础设施、网络安全等保三级及以上的系统。评测依据&#xff1…

IMO国际奥林匹克数学竞赛推出AI-MO,奖金高达1000万美元; SDXL Turbo: 新一代文本到图像模型

&#x1f989; AI新闻 &#x1f680; IMO国际奥林匹克数学竞赛推出AI-MO&#xff0c;奖金高达1000万美元 摘要&#xff1a;IMO国际奥林匹克数学竞赛推出新的AI竞赛AI-MO&#xff0c;旨在推动大语言模型的数学推理能力&#xff0c;鼓励开发能与人类数学天才相媲美的AI模型。比…

真空工艺腔内潮湿有什么危害?

在半导体制程中&#xff0c;真空工艺腔被广泛使用。薄膜沉积&#xff0c;干法刻蚀&#xff0c;光刻&#xff0c;退火&#xff0c;离子注入等工序均需要在相应的真空腔室中完成相应制程。真空工艺腔在半导体制程中起着至关重要的作用&#xff0c;它能够提供一个高度控制的环境&a…

在Springboot中操作Redis——五大数据类型

在Java中操作Redis Redis的Java客户端 前面我们讲解了Redis的常用命令&#xff0c;这些命令是我们操作Redis的基础&#xff0c;那么我们在java程序中应该如何操作Redis呢&#xff1f;这就需要使用Redis的Java客户端&#xff0c;就如同我们使用JDBC操作MySQL数据库一样。 Red…

电气制图用什么软件?CAD和Eplan哪个更胜一筹?

身为电气工程师&#xff0c;每天打交道最多的可能不是自家对象&#xff0c;而是时时刻刻攥在手里的电气图。目前市面上制作电路图的软件形形色色&#xff0c;但是AutoCAD Electrical和Eplan是目前大家使用率最高的两款电气制图软件。 EPLAN是一款专业的电气设计软件&#xff0…

UTONMOS:元宇宙时代已经来临

当我们站在这个新的人工智能时代的十字路口&#xff0c;不可避免地要面对一个问题&#xff1a;在这个技术革新的大潮中&#xff0c;区块链技术还有没有生存和发展的空间&#xff1f;本文将深入探讨这个问题&#xff0c;分析区块链在人工智能时代的优势、挑战以及未来的可能性。…

【算法刷题】Day7

文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目&#xff0c;首先看一下题干的要求&#xff0c;是在原数组内进行操作&#xff0c;平切保持非零元素的相对顺序 这个时候我们看到了示例一&#xff1a; [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …

ground truth 在深度学习任务中代表的是什么意思?

1、概念 在深度学习领域&#xff0c;ground truth (中文意思是“地面真实值”或“基准真实值”&#xff0c;简单理解就是真实值) 是指用于训练和评估模型的准确标签或数据。它是机器学习算法的参考标准&#xff0c;用于衡量模型的性的和判断模型的准确性&#xff0c;本文将介绍…

泗博Modbus转Profinet网关TS-180对水表流量的监控应用

应用场景&#xff1a; 陕西某工程技术有限公司在一民生工程项目中&#xff0c;需要对公园直饮水进行净化保证其水质。直饮水净化装置需根据用水量不定期的维护&#xff0c;通过统计各个净化装置净化的直饮水的流量&#xff0c;来实现提前维护目的。 应用痛点&#xff1a; 项目…

4/150:寻找两个正序数组的中位数⭐

题目&#xff1a;寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 题解1&#xff1a;暴力 暴力思路简介&#xff0c;…

基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析实践应用

生态系统服务是指生态系统所形成的用于维持人类赖以生存和发展的自然环境条件与效用&#xff0c;是人类直接或间接从生态系统中得到的各种惠益。联合国千年生态系统评估&#xff08;Millennium ecosystem assessment&#xff0c;MA&#xff09;提出生态系统服务包括供给、调节、…

项目中的svg图标的封装与使用

1.安装 npm install vite-plugin-svg-icons -D2.在vite.config.ts中配置 **所有的svg图标都必须放在assets/icons // 引入svg import { createSvgIconsPlugin } from vite-plugin-svg-iconsexport default defineConfig({plugins: [vue(),createSvgIconsPlugin({iconDirs: [p…

项目:基于UDP的网络聊天室

项目需求&#xff1a; 1.如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息 2.如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息 3.如果有人下线&#xff0c;其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息 服务器代码&#xff1a; #i…

《数据结构与测绘程序设计》试题详细解析(仅供参考)

一. 选择题&#xff08;每空2分&#xff0c;本题共30分&#xff09; &#xff08;1&#xff09;在一个单链表中&#xff0c;已知q所指结点是p所指结点的前驱结点&#xff0c;若在q和p之间插入结点s&#xff0c;则执行( B )。 A. s->nextp->next; p->nexts; …

王者荣耀游戏制作

1.创建所需要的包 2.创建怪物类 bear package beast;import wangzherogyao.GameFrame;public class Bear extends Beast {public Bear(int x, int y, GameFrame gameFrame) {super(x, y, gameFrame);setImg("img/bear.jpg");width 85;height 112;setDis(65);}} b…

和鲸全程支持:第二届粤港澳大湾区(黄埔)国际算法算例大赛初赛赛程圆满收官!

随着新一轮科技革命与产业变革的加速演进&#xff0c;算法&#xff0c;作为一种战略性的科技、生产要素&#xff0c;已成为推动数字技术与实体经济深度融合的核心支撑。为助力地区大数据与人工智能算法的生态体系建设、赋能社会经济的高质量发展&#xff0c;琶洲实验室&#xf…