Linux系统Shell脚本之shell数组、正则表达式、及AWK
目录
一.shell数组
1.数组分类
2.定义数组的方法
二.正则表达式
1. 元字符
2.表示次数
3.位置锚定
4.分组
5.扩展正则表达式
三.文本三剑客之AWK
1.awk
2.使用格式
3、处理动作
4.选项
5.处理模式
6.awk常见的内置变量
7.if条件判断
一.shell数组
1.数组分类
①关联数组:必须声明才可以使用,命令:delare -A 数组名
②普通数组:利用数字下标节约变量,可以不声明也可以声明,命令:delare -a 数组名
delare -a命令也可查看有哪些普通数组
2.定义数组的方法
①普通数组
②关联数组定义
二.正则表达式
注意事项:使用正则表达式必须加引号。
1. 元字符
①.:在正则表达式中.表示任意单个字符。
③[^]:在正则表达式中表示匹配[ ]中外的任意单个字符。
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
2.表示次数
①*:表示匹配前面字符任意次,包括0次。
②.*:表示匹配前面字符任意次,不包括0次。
③\?:表示匹配前面的字符1次或0次,即可有可无。
④\+:表示匹配前面的字符最少1次。
⑤\{n\}:表示匹配前面的字符n次。
⑥\{m,n\}:表示匹配前面的字符最少m次最多n次 。
⑦\{m,\}:表示匹配前面的字符最少m次。
⑧\{,n\}:表示匹配前面的字符最多n次。
3.位置锚定
①^表示以什么字符开头的行。
②$表示以什么字符为结尾的行。
③^PATTERN$ 表示用于模式匹配整行 (单独一行 只有PATTERN字符)。
④^$ 表示空行。
⑤\< 或 \b #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)。
⑥\> 或 \b #词尾锚定,用于单词模式的右侧。
⑦\<PATTERN\> #匹配整个单词。
4.分组
()将多个字符捆绑在一起当做一个整体处理
5.扩展正则表达式
①使用方法
grep -E选项加正则表达式内容,与正常正则表达式区别在于不用在匹配时添加 \
②表示次数
* 匹配前面字符任意次
? 0或1次
+ 1次或多次
{n} 匹配n次
{m,n} 至少m,至多n次
{,n} #匹配前面的字符至多n次,<=n,n可以为0
{n,} #匹配前面的字符至少n次,<=n,n可以为0
③表示分组
() 分组
三.文本三剑客之AWK
1.awk
awk为流编辑器,即读取文件一行处理一行。不同于vi编辑器等是将文件整个缓存在内容中处理。
2.使用格式
awk [选项] '处理模式{处理动作}'
'{ }'为固定格式
3、处理动作
①基本格式:awk [选项] '处理模式{处理动作}'
②print动作:打印,打印'{print $1}'即为打印第一列,'{print $n}'即打印为第n列,'{print $n,$m}'即为打印第n列和第m列。
③print打印顺序:'BEGIN{print "1"} END {print "2"} {print "3"} ',首先打印BEGIN后的print 1,然后打印print 3 最后打印END后的print 2,BEGIN表示第一个打印,END表示最后打印
4.选项
①基本格式:awk [选项] '处理模式{处理动作}'
②选项若不写默认为以空格为分隔符处理,且会将空格自动压缩。
③-F 选项 指定分隔符,即指定以什么为分隔符处理内容
5.处理模式
①基本格式:awk [选项] '处理模式{处理动作}'
②处理模式为空表示无其他额外条件。
③正则表达式匹配模式
正则匹配:与正则表达式配合使用。
举例:
[root@pc1 data]#cat test.txt #创建test.txt
root 1 abc 2 3 4 5 6 7 8
abcd
sadfasdf root
[root@pc1 data]#awk '/^root/{print $2}' test.txt #使用awk配合正则表达式打印出test.txt文件中以root为开头的行的第二列,注意处理模式在固定格式'{}'的单引号中
1 #匹配出的内容
[root@pc1 data]#awk '/^root/,/root$/{print $2}' test.txt #使用awk配合正则表达式打印出test.txt文件中以root为开头的且以root结尾的第二列,注意处理模式在固定格式'{}'的单引号中
1
root #匹配出的内容
6.awk常见的内置变量
比较操作符:==, !=, >, >=, <, <=
逻辑操作符:&&与 并且的关系,||或 或者关系,!非 取反关系
①FS :指定每行文本的字段分隔符,缺省为空格或制表符(tab)。与 “-F”作用相同 -v "FS=:"
②OFS:输出时的分隔符
[root@pc1 data]#cat a.txt
a:b:c
[root@pc1 data]#awk -v "FS=:" -v OFS="==" '{print $1OFS$3}' a.txt 使用FS变量指定:为分隔符且指定输出分隔符OFS为==,打印a.txt文件的第1列和第3列
a==b
③NF:当前处理的行的字段个数即处理行有多少列,默认按空格分列,可指定。
④NR:当前处理的行的行号(序数)
⑤$0:当前处理的行的整行内容
⑥$n:当前处理行的第n个字段(第n列)
⑦FILENAME:被处理的文件名
⑧RS:行分隔符。awk从文件上读取资料时,将根据RS的定义就把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是\n
7.if条件判断
if语句:awk的if语句也分为单分支、双分支和多分支
单分支为if(){}
双分支为if(){}else{}
多分支为if(){}else if(){}else{}
相关文章:
Linux系统Shell脚本之shell数组、正则表达式、及AWK
目录 一.shell数组 1.数组分类 2.定义数组的方法 二.正则表达式 1. 元字符 2.表示次数 3.位置锚定 4.分组 5.扩展正则表达式 三.文本三剑客之AWK 1.awk 2.使用格式 3、处理动作 4.选项 5.处理模式 6.awk常见的内置变量 7.if条件判断 一.shell数组 1.数组分类 …...
在 ESP-IDF 中使用 .a 静态库调用
1. 准备静态库文件 将你的 .a 文件(如 libmylib.a)放置在工程目录中,推荐放在 components 子目录下: your_project/ ├── CMakeLists.txt ├── main/ └── components/└── my_lib/├── include/ # 头文件│ …...
大疆无人机“指点飞行模式”(TapFly)
在大疆无人机的功能中,“指点飞行模式”(TapFly)是一种通过点击屏幕目标点,让无人机自动规划路径并飞向指定位置的智能飞行模式。用户无需手动操控摇杆,只需在 App 地图或实时画面上点击目标位置&…...
力扣 : 781. 森林中的兔子
781. 森林中的兔子 - 力扣(LeetCode) 同一个数字的可以分为一组 , 3就是有3个人和我自己相同 也就是4个人,所以相同的数字可以分为 / (num1) 向上取整 class Solution { public:int numRabbits(vector<int>& answer…...
LVS中的DR模式,直接路由模式
DR模式工作原理介绍 请求经过调度器,响应由real server 直接响应给客户端。 如上图所示,real server想要正常访问互联网,后端的real server的网关就得写网络中真实的网关。 DR模式的核心要素:【重点】 1.请求经过调度器&…...
iTwin 数据报表(只是简单的原型不代表实现)
大概想法是 前端从schema和class中选中感兴趣的property内容生成ecsql语句传递给后端后端解析ecsql并提供公开接口给各个分析工具,如excel,poewerBI等(Odata或者直接选择来自网站)再由分析工具做进一步的处 还未想好的点 如何存…...
【无标题】如何在sheel中运行Spark
启动hdfs集群,打开hadoop100:9870,在wcinput目录下上传一个包含很多个单词的文本文件。 启动之后在spark-shell中写代码。 // 读取文件,得到RDD val rdd1 sc.textFile("hdfs://hadoop100:8020/wcinput/words.txt") // 将单词进行…...
Spark 处理过程转换:算子与行动算子详解
在大数据处理领域,Apache Spark 凭借其强大的分布式计算能力脱颖而出,成为处理海量数据的利器。而 Spark 的核心处理过程,主要通过转换算子和行动算子来实现。本文将深入探讨 Spark 中的转换算子和行动算子,帮助读者更好地理解和应…...
Docker编排工具---Compose的概述及使用
目录 一、Compose工具的概述 二、Compose的常用命令 1、列出容器 2、查看访问日志 3、输出绑定的公共端口 4、重新构建服务 5、启动服务 6、停止服务 7、删除已停止服务的容器 8、创建和启动容器 9、在运行的容器中执行命令 10、指定一个服务启动容器的个数 11、其…...
Matlab实现绘制任意自由曲线
Matlab实现绘制任意自由曲线,实现Photoshop中的钢笔路径功能,用光顺连接的B样条/贝塞尔曲线实现,鼠标点击生成控制点,拖动形成任意曲线。 可描绘多路径,也可旋转、平移、缩放。经调试可用。 ByangtiaoSculpt/Byangti…...
如何保证Kafka生产者的消息顺序性? (单分区内有序,需确保同一Key的消息发送到同一分区)
Kafka 生产者消息顺序性保障方案 1. 核心实现原理 消息顺序性保障公式: 同一 Key → 同一 Partition → 严格顺序写入2. 关键配置参数 Properties props new Properties(); props.put("acks", "all"); // 确保消息持久化 props.put("ma…...
[D1,2] 贪心刷题
文章目录 摆动序列最大子数组合买卖股票跳跃游戏跳跃2 摆动序列 不像是贪心,只要抓住摆动这个点,前一个上升,那下一个就要下降,记录上一次的状态为1的话,那下一次就要更新为-1,如果上一次为1,这…...
springboot使用阿里云OSS实现文件上传
在Spring Boot中集成阿里云OSS(对象存储服务)可以通过以下步骤实现: 添加Maven依赖 在pom.xml中添加阿里云OSS SDK依赖: <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss<…...
nginx之proxy_redirect应用
一、功能说明 proxy_redirect 是 Nginx 反向代理中用于修改后端返回的响应头中 Location 和 Refresh 字段的核心指令,主要解决以下问题:协议/地址透传错误:当后端返回的 Location 包含内部 IP、HTTP 协议或非标准端口时,需修正为…...
FAISS(Facebook AI Similarity Search)
First steps with Faiss for k-nearest neighbor search in large search spaces - Davide’s GitHub pages FAISS(Facebook AI Similarity Search)是由Meta(原Facebook)AI团队开发的高效相似性搜索库,主要用于处理大规…...
创建虚拟服务时实现持久连接。
在调度器中配置虚拟服务,实现持久性连接,解决会话保持问题。 -p 【timeout】 -p 300 这5分钟之内调度器会把来自同一个客户端的请求转发到同一个后端服务器。【不管使用的调度算法是什么。】【称为持久性连接。】 作用:将客户端一段时间…...
RabbitMQ中Exchange交换器的类型
在RabbitMQ中,Exchange(交换器)是消息路由的核心组件,它接收生产者发送的消息,并根据不同的规则将消息转发到一个或多个队列。 RabbitMQ主要支持以下几种类型的交换器: 1. Direct Exchange(直连…...
JavaSE核心知识点01基础语法01-05(字符串)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 JavaSE核心知识点01基础语法01-05࿰…...
Vue 项目中二维码生成功能全解析
Vue 项目中二维码生成功能全解析 在信息快速传递的时代,二维码以其简洁高效的特点,成为数据交互的重要媒介。无论是用于支付、信息分享,还是活动参与,二维码都扮演着关键角色。在 Vue 项目开发中,如何实现二维码生成功…...
【AWS+Wordpress】将本地 WordPress 网站部署到AWS
前言 自学笔记,解决问题为主,亲测有效,欢迎补充。 本地开发机:macOS(Sequoia 15.0.1) 服务器:AWS EC2(Amazon Linux 2023) 目标:从本地迁移 WordPress 到云…...
性能优化-初识(C++)
性能优化-初识 一、内联与优化(Inlining and Optimization)什么是内联(inline)?使用方式:适用场景:注意事项: 二、缓存友好设计(Cache-Friendly Design)原理简…...
[人机交互]交互设计过程
*一.设计 1.1什么是设计 设计是一项创新活动,旨在为用户提供可用的产品 –交互设计是“设计交互式产品、以支持人们的生活和工作” 1.2设计包含的四个活动 – 识别用户的需要( needs )并建立需求( requirements ) …...
密码学基石:哈希、对称/非对称加密与HTTPS实践详解
密码学是现代信息安全的基石,它提供了一系列强大的数学工具和技术,用于保护数据的机密性、完整性和真实性,并确保通信双方的身份可被认证。在纷繁复杂的网络世界中,无论是安全的网页浏览 (HTTPS)、安全的软件更新、还是用户密码的…...
WebRTC通信原理与流程
1、服务器与协议相关 1.1 STUN服务器 图1.1.1 STUN服务器在通信中的位置图 1.1.1 STUN服务简介 STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重 NAT)…...
ChromaDB调用BGE模型的两种实践方式
ChromaDB调用BGE模型 前言1.chromadb调用BGE模型api2.调用本地模型 前言 在语义搜索、知识库构建等场景中,文本向量化(Embedding)是核心技术环节。作为一款开源的向量数据库,ChromaDB允许开发者通过自定义嵌入函数灵活对接各类模…...
解构与重构:自动化测试框架的进阶认知之旅
目录 一、自动化测试的介绍 (一)自动化测试的起源与发展 (二)自动化测试的定义与目标 (三)自动化测试的适用场景 二、什么是自动化测试框架 (一)自动化测试框架的定义 &#x…...
如何巧妙解决 Too many connections 报错?
1. 背景 在日常的 MySQL 运维中,难免会出现参数设置不合理,导致 MySQL 在使用过程中出现各种各样的问题。 今天,我们就来讲解一下 MySQL 运维中一种常见的问题:最大连接数设置不合理,一旦到了业务高峰期就会出现连接…...
【卡特兰数】不同的二叉搜索树
文章目录 96. 不同的二叉搜索树解法一:动态规划状态表示状态转移方程初始化遍历顺序返回值💥解法二:卡特兰数96. 不同的二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉…...
《饶议科学》阅读笔记
《饶议科学》 《偷窃的生物学机制:(有些)小偷有药可治》阅读笔记 核心内容:探讨偷窃狂(kleptomania)的生物学机制及相关研究。具体要点 偷窃狂的特征:患者不可抑制地反复偷窃个人不需要、与金钱…...
ShardingJdbc-公共表
ShardingJdbc-公共表 公共表 公共表属于系统中数据量小,变动少,但是却高频联合查询的表,参数表,字典表等属于此类型。可以将此类表在每个数据库中存储一份,所有更新操作将同时发送到所有分库执行。 案例 建立库 shar…...
低成本监控IPC模组概述
1、低成本sigmastar ssc335\ssc377摄像机方案,配合AI边缘计算终端即插即用,差异化AI训练及样 本采集 2、支持200万、500万H265\H264视频编码,支持网络Rtsp,Rtmp,Onvif,web,GB28181,tf卡本地录像, 视频平台接入等...
携手高校科研团队,共建TWS耳机芯片技术新生态
TWS(真无线立体声)蓝牙耳机已成为人们生活中不可或缺的一部分。而在这背后,有一家名为华芯邦的公司,其专注于TWS蓝牙仓耳机芯片的研发,并不断取得令人瞩目的突破。 一、芯片领域的实力玩家 华芯邦作为一家在芯片行业崭…...
动态规划-91.解码方法-力扣(LeetCode)
一、题目解析 将对应字符转化为数字,我们知道有的大写字母范围是在[1,9],剩下的则是[10,26],这个对应关系使我们解题的关键。 二、算法原理 1.状态表示 dp[i]表示:以i位置为结尾时,解码方法总…...
(三)Java数据类型与进制详解
一、Java数据类型概述 Java是一种强类型语言,这意味着每个变量和表达式在编译时都必须有明确的类型。Java的数据类型系统是其核心基础之一,它决定了如何存储数据、能存储什么样的数据以及能对数据执行哪些操作。 1.1 为什么需要数据类型 数据类型在编…...
用 CodyBuddy 帮我写自动化运维脚本
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴”。 #CodeBuddy首席试玩官 背景 我个人是非常喜欢 Jenkins 自动化部署工具的,之前都是手写 Jenki…...
【Linux庖丁解牛】—程序地址空间【进程地址空间 | 虚拟地址空间】
1. 再谈空间分布图 我们之前在学C/C的时候必然学过上面的空间分布图。 可是我们对他并不理解!这里先对其进行各区域分布验证: #include <stdio.h> #include <unistd.h> #include <stdlib.h> int g_unval; int g_val 100; int ma…...
nginx 上传文件,413 request entity too large
目录 1 问题2 解决 1 问题 前端后端项目,上传文件,接口没问题,但是就是上传不成功 ,然后打开f12 ,发现这个接口出现413 request entity too large 这个报错 2 解决 1.1 修改nginx配置文件 在Nginx中,cli…...
Nacos源码—5.Nacos配置中心实现分析二
大纲 1.关于Nacos配置中心的几个问题 2.Nacos如何整合SpringBoot读取远程配置 3.Nacos加载读取远程配置数据的源码分析 4.客户端如何感知远程配置数据的变更 5.集群架构下节点间如何同步配置数据 4.客户端如何感知远程配置数据的变更 (1)ConfigService对象使用介绍 (2)客…...
数智管理学(八)
四、未来管理学可能的新拓展方向 (一)人工智能与机器学习的融合形成智能决策管理职能 随着人工智能和机器学习技术的不断发展,它们将在管理学中得到更广泛的应用。传统决策方法难以快速处理海量数据并准确把握复杂的市场动态。人工智能与机…...
Compose Multiplatform iOS 稳定版发布:可用于生产环境,并支持 hotload
随着 Compose Multiplatform 1.8.0 的发布,iOS 版本也引来的第一个稳定版本,按照官方的原话:「iOS Is Stable and Production-Ready」 ,而 1.8.0 版本,也让 Kotlin 和 Compose 在移动端有了完整的支持。 在 2023 年 4 …...
spark基本介绍
一、Spark概述 Spark是一种基于内存的快速、通用、可拓展的大数据分析计算引擎。 Hadoop是一个分布式系统结构的基础架构。 二、Spark与Hadoop相比较的优势: 1. 处理速度:Hadoop:数据处理速度相对较慢 Spark:速度比Hadoop快很…...
DeepSeek智能时空数据分析(九):NL2SQL绘制河流名字-如何给轨迹添加说明文字
序言:时空数据分析很有用,但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要,然而,三大挑战仍制约其发展:技术门槛高,需融合GIS理论、SQL开发与时空数据库等多领域知识;空…...
管家婆实用贴-如何在Excel中清除空格
我们在使用管家婆软件时,经常会用到Excel表格导入导出数据,在使用Excel整理数据时,数据中的空格可能会导致计算和分析出现问题。无论是多余的前导空格、尾部空格还是单元格中的不必要空格,清除它们都是确保数据准确性的关键。今天…...
《软件项目管理》笔记一
软件项目管理概述 项目管理属于软件工程的组成之一,另外两部分为:软件开发,过程改进。 参考书如下: 1.1 项目与软件项目 1、项目: 为了创造一个唯一的产品或提供一个唯一的服务而进行 的临时性的努力。 2、项目的…...
前端线上错误日志收集与定位指南
想象一下:你的Web应用上线后,用户反馈“按钮点不动”或“页面白屏”,但你却无从下手!前端线上错误如JavaScript异常、网络失败,稍不注意就让用户流失,业务受损。令人抓狂的是,80%的错误悄无声息…...
可视化魔法指南
🎨 ECharts数据可视化魔法指南 🌟 ECharts:数据的艺术画笔 #mermaid-svg-ARwFHUrXBJ03Gpo9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ARwFHUrXBJ03Gpo9 .error-icon{fill:#552222;}#mermaid-svg-ARwFHUr…...
使用ffmpeg截取MP3等音频片段
可以使用以下命令通过 ffmpeg 截取 MP3 音频文件的指定片段: ffmpeg的安装方法参考:linux 安装包方式安装ffmpeg,并在环境中设定或指定ffmpeg地址_linux 通过ffmpeg访问地址-CSDN博客 ffmpeg -ss [start_time] -i input.mp3 -to [end_time] -codec copy output.mp3 参数说…...
FFmpeg(7.1版本)编译生成ffplay
FFmpeg在编译的时候,没有生成ffplay,怎么办? 1. 按照上一篇文章:FFmpeg(7.1版本)在Ubuntu18.04上的编译_ffmpeg-7.1-CSDN博客 在build.sh脚本里配置了ffplay 但是,实际上却没有生成ffplay,会是什么原因呢? 2. 原因是编译ffplay的时候,需要一些依赖库 sudo apt-get i…...
CAN学习之--不使用收发器进行通讯测试
在实际调试或者学习CAN通讯过程中,在需要进行CAN调试的时候,但是手头有只有MCU的评估板,没有CAN的收发器,比如ATA6561、MCP2518这类芯片的时候,该怎么办呢? 因为我们知道,CAN收发器只是做信号的…...
律所项目管理全攻略:人力分配 / 案件管控 / 知识沉淀三维度解析(附专用工具清单)
引言:律所项目管理破局 ——从经验驱动到体系化运营 在法律服务行业数字化转型加速的背景下,律所项目管理能力已成为决定服务质量、客户满意度及团队效能的核心竞争力。从人力分配失衡导致的效率损耗,到案件流程模糊引发的客户信任危机&…...