Linux-通配符与正则表达式

补充:命令

输出重定向

标准输出:是将信息输出在终端

标准错误输出:在执行命令的过程中所产生错误信息也是输出在终端

标准输入:从键盘输入

1、标准输入重定向

作用:将本来要显示在终端上的信息重定向到一个文件夹中

实现方法

>:将文件中原有的内容全部删除,然后进行写入

>>:在文件的原有内容后,追加新的内容

2、标准错误错误输出重定向

2>:将文件中原有的内容全部删除,然后进行写入

2>>在文件的原有内容后,追加新的内容

例:将正确和错误的信息都保存到同一个文件中

ls /root /raat &> 1.txt

通配符

1、*:任意长度的任意字符

例:删除以a开头的文件

rm -rf a*

2、?:一个长度的任意字符

例:删除文件名第二个是a的文件

rm -rf ?a

3、;(分号):用于链接多个命令

例:cd /tmp;cd ~;ls /

4、&&:只有前面的命令执行成功,后面的命令才会执行

例:cd ~ && ls

5、||:只有前面的命令执行失败,才会执行后面的命令

例:cd /toit || ls

6、#:注释行(描述信息,不执行)

7、|:管道符,将前面的命令执行结果,传递到后面

8、~:root的家目录

9、-:上一次所在的目录

例:cd -            》返回上一次所在目录

10、$:变量前加的符号

11、/:表示根或分隔符

12、>、>>:重定向

13、<<:用于打印菜单

例:

 cat << EOF

> 1

> 2

> 3

> EOF

14、引号

" ":强引用,引用中的变量会变成变量的值

' ':弱引用,引用的内容原样输出

` `:命令替换

 15、.(点):表示当前目录

..:表示上一级目录

16、{}:花括号展开

用法:创建1-10.dir目录

mkdir {1..10}.dir

正则表达式

构成:一堆特殊符号和字母构成----叫做元字符

作用:通过对文本中内容进行过滤,然后对文件中的内容进行过滤

正则表达式的种类

基础正则表达式

扩展正则表达式

通常结合三个命令来使用

grep

sed

awk

命令:grep

作用:对文件的内容进行过滤

格式:grep 选项 "匹配内容" 文件名

选项

-v:取反

-o:仅仅显示所匹配的内容

-E:使用扩展

-i:忽略大小写

正则和通配符的区别

通配符是对文件名进行匹配,正则表达式是对文件中的内容进行匹配

正则中元字符

1、匹配单个字符

.(点):表示任意一个字符(可以是空格、逗号、数字...)

例:匹配a前面有一个字符的行

grep ".a" 文件名

2、[ ]:表示范围内中的其中一个

[12345]:匹配1或2或3或4或5

[0-9]:匹配所有的数字

[a-z]:匹配所有的小写字母

[A-Z]:匹配所有的大写字母

[a-Z]:匹配所有的字母(不分大小写)

3、用字符集的方式表达

[[:space:]]:表示一个空格

[[:digit:]]:表示任意一个数字

[[:lower:]]:表示任意一个小写字母

[[:upper:]]:表示任意一个大写字母

[[:alnum:]]:表示任意一个字母+数字

[[:punct:]]:表示任意一个标点符号

4、^[]

例:匹配以a开头的行

grep "^[a]" 文件名

grep "^a" 文件名

例:匹配除a之外的任意字符

grep "[^a]" 文件名

5、显示匹配到的内容前的若干行

-An:显示匹配到的内容的后n行

-Bn:显示匹配到的内容的前n行

-Cn:显示匹配到的内容的前后各n行

例:匹配包含root的行前3行

grep -B3 "root" 文件名

6、次数匹配

*:前面字符出现了任意次数

例:过滤文件中开头第一个字符为a的行

grep "a*" 文件名

.*:表示任意长度的任意字符

例:过滤文件中以a开头,b结尾

grep "a.*b" 文件名

?:表示其前面的字符出现一次

a\{m,n\}b:b前面的a出现m次,最多n次

7、位置锚定

^n:表示以n开头的行

$n:表示以n结尾的行

\<n:表示单词首部

n\>:表示单词尾部

^$:表示空白行

8、分组

\( \):将一个内容当作一个整体看待

例:过滤出出现两个相同数字的行

grep "\([[:digit:]]\).*\1" 文件名

扩展正则表达式

基础正则:grep [选项] 匹配内容 文件名

扩展:

grep -E 匹配内容 文件名

egrep 匹配内容 文件名

{1, }等同+:其前面的字符至少出现过1次

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

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

相关文章

【Spring Cloud】服务熔断

目录 服务雪崩效应服务雪崩效应形成的原因及应对策略小结 Hystrix介绍Hystrix可以做什么1.资源隔离2.请求熔断3.服务降级 小结 Hystrix实现服务降级方式一&#xff1a;HystrixCommand注解方式1.服务提供者1.1业务接口和业务实现中添加方法hystrixTimeout1.2控制器中处理/provid…

【pm2 - sdk 集成到程序中,典型用法】

pm2作为一款进程管理神器&#xff0c;除了命令行的启动方式外&#xff0c;其还对应有sdk&#xff0c;集成到程序中&#xff0c;我们可以连接到已有或创建pm2的守护进程&#xff0c;与其进行交互&#xff0c;动态&#xff0c;编程式地控制程序的启停等。以下为示例&#xff1a; …

python list 重复元素不会覆盖

python list 插入重复元素不会覆盖&#xff0c;见以下测试&#xff1a; Python 3.10.12 (main) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> a [1, 2, 3] >>…

c++ - vector容器常用接口模拟实现

文章目录 一、成员变量二、常用迭代器接口模拟实现三、一些常用接口模拟四、默认成员函数五、功能测试 一、成员变量 我们通过在堆上申请一个数组空间来进行储存数据&#xff0c;我们的成员变量是三个指针变量&#xff0c;分别指向第一个位置、最后储存有效位置的下一个位置以…

vue中父组件与子组件的数据传递

例如在子组件中调用了&#xff1a; this.$emit(changePanel, panel) 这句代码是 Vue.js 框架中的一个方法调用&#xff0c;用于触发一个自定义事件。在 Vue.js 中&#xff0c;组件可以通过 $emit 方法来触发自定义事件&#xff0c;并传递数据给父组件。 下面是对这句代码的详…

特殊矩阵的压缩矩阵

目录 前提条件&#xff1a; 类型&#xff1a;对称矩阵&#xff0c;三角矩阵、三对角矩阵、稀疏矩阵 1&#xff1a;对称矩阵&#xff1a; 定义&#xff1a;n阶矩阵A 中任意一元素都有ai,jaj,i(1<i,j<n) 图像&#xff1a; 表达式&#xff1a; 计算过程&#xff1a; …

stream-并行流

定义 常规的流都是串行的流并行流就是并发的处理数据&#xff0c;一般要求被处理的数据互相不影响优点&#xff1a;数据多的时候速度更快&#xff0c;缺点&#xff1a;浪费系统资源&#xff0c;数据少的时候开启线程更耗费时间 模版 Stream<Integer> stream1 Stream.of…

【YOLO 系列】基于YOLO V8的学生上课行为检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言 在现代教育环境中&#xff0c;学生上课行为的监测对于提升教学质量和学生学习效率具有重要意义。然而&#xff0c;传统的人工观察方法不仅效率低下&#xff0c;而且难以保证客观性和准确性。为了解决这一问题&#xff0c;我们启动了这个项目&#xff0c;目的是利用YOLOV8…

15.3 js数组塌陷和数组去重

数组塌陷 使用splice或pop会影响数组长度,形成循环次数的问题 pop 例子:pop从后删除了数据,那么影响了数组长度,i的值缩小 var arr = [1, 2, 3, 4, 5, 6, 7];for (var i = 0; i < arr.length; i++) {arr.pop(arr[i]);console.log(arr, i);}console.log("塌陷…

AI数学知识

AI数学知识 1、线性代数相关&#xff08;矩阵&#xff09;1、什么是秩2、奇异值分解3、特征值分解和奇异值分解4、低秩分解 回归分类知识点2、概率论相关1、先验概率和后验概率2、条件概率、全概率公式、贝叶斯公式、联合概率3、最大似然估计4、贝叶斯公式和最大似然估计5、伯努…

深入理解Kubernetes的调度核心思想

一、引言 Kubernetes&#xff08;简称K8s&#xff09;是一个开源的容器编排系统&#xff0c;用于自动化部署、扩展和管理容器化应用程序。在Kubernetes集群中&#xff0c;调度器是一个核心组件&#xff0c;它负责将Pod&#xff08;Kubernetes中的最小部署单元&#xff09;分配…

python读写二进制文件

需求&#xff1a;将Test文件夹下所有bin文件中凡是出现128的统一替换成129。 import os root rD:\TXB\Y2022\PROJ\S2106\INNER\内部研究\语音信号处理\智能语音处理\test\pattern_0513 for file in os.listdir(root):if file.endswith(.bin):src_path os.path.join(root, fi…

Java学习16

目录 一.StringBuffer类&#xff1a; 1.基本介绍&#xff1a; 2.StringBuffer的构造器&#xff1a; 3.String与StringBuffer的相互转换&#xff1a; &#xff08;1&#xff09;String->StringBuffer &#xff08;2&#xff09;StringBuffer->String 4.StringBuffer…

AutoDL中Notebook中无法打开“checkpoints”文件夹

checkpoints是Notebook的关键字&#xff0c;若用户创建文件夹命名为checkpoints&#xff0c;则在JupyterLab上无法打开、重命名和删除。此时可以在Terminal里使用命令行打开checkpoints&#xff0c;或者新建文件夹将checkpoints里的数据移动到新的文件夹下。 操作步骤&#xf…

Linux设置Huggingface镜像代理

打开终端&#xff08;Terminal&#xff09;。使用 vim 编辑 .bashrc 文件&#xff1a;vim ~/.bashrc在 vim 中&#xff0c;按 G 键移动到文件的末尾&#xff0c;然后按 o 键插入新的一行。输入以下内容&#xff1a;export HF_ENDPOINThttps://hf-mirror.com按 Esc 键退出插入模…

Redis篇 数据的编码方式和单线程模型

编码方式和单线程模型 一.redis中的数据类型二. Redis中查询编码方式命令三. 单线程模型四. 经典面试题,redis为何这么快?什么是IO多路复用? 一.redis中的数据类型 在redis中,数据类型大致分为5种 1.字符串类型 2.哈希 3.列表 4.集合 5.有序集合 redis底层在实现这些数据结构…

黑马点评-短信登录

Override public Result sendCode(String phone) { // 1.检验手机号 if (RegexUtils.isPhoneInvalid(phone)) { // 这里抛出异常和return fail有什么区别吗&#xff1f;———> 有区别&#xff0c;抛出异常会被全局异常处理器捕获&#xff0c;返回fail不会 throw ne…

防火墙技术基础篇:NAT转发之——NAPT(同时转换地址和端口)

NAT转发之——NAPT&#xff08;同时转换地址和端口&#xff09; 网络地址端口转换NAPT 网络地址端口转换NAPT&#xff08;Network Address Port Translation&#xff09;是人们比较熟悉的一种转换方式。NAPT普遍应用于接入设备中&#xff0c;它可以将中小型的网络隐藏在一个合…

Vue2和Vue3生命周期的对比

Vue2和Vue3生命周期的对比 Vue2 和 Vue3 生命周期对照表Vue2 和 Vue3 生命周期图示 Vue2 和 Vue3 生命周期对照表 触发时机Vue2.xVue3.x组件创建时运行beforeCreate setup createdsetup 挂载在DOM时运行beforeMountonBeforeMountmountedonMounted响应数据修改时运行beforeUpdat…

线程安全-4 AQSLockReentrantLock

一.什么是AQS&#xff1f; 1.AQS&#xff0c;AbstractQueuedSynchronizer&#xff0c;抽象队列同步器&#xff0c;是一个用于构建锁和同步器的框架。 2.基于AQS实现的锁或同步器有&#xff1a;可重入锁ReentrantLock、计时锁CountDownLatch、信号量Semaphore等 3.AQS三大核心…