shell——正则表达式入门

server/2024/10/24 5:59:11/

目录

一、常规匹配

二、特殊字符

^

$

.

*

字符区间

 \

三、示例


        shell中总是会需要对文本字符串做各种各样的剪切拼接等操作,除了 basename 和 dirname 这种简单的函数外,还可以用正则表达式,定义模糊匹配的筛选规则

一、常规匹配

        管道操作就是一种匹配方式,如用来查找用户:

[root@hadoop-master ~]# cat /etc/passwd | grep zxd
zxd:x:1001:1001::/home/zxd:/bin/bash

二、特殊字符

        正则的强大就是因为可以使用各种各样的特殊字符 

^

        匹配一行的开头,如 ^ab 表示以 ab 开头的所有行

[root@hadoop-master etc]# cat /etc/passwd | grep ^h
halt:x:7:0:halt:/sbin:/sbin/halt
hue:x:1000:1000::/home/hue:/bin/bash

$

        匹配一行的结束,如 zxd$ 表示以 zxd 结尾的所有行

[root@hadoop-master etc]# cat /etc/passwd | grep t$
halt:x:7:0:halt:/sbin:/sbin/halt

        一起使用 ^abc$,会匹配 abc,使用^$会匹配空行,加上-n参数会显示行号

[root@hadoop-master daily_archive_func]# cat daily_archive_func.sh | grep -n ^$
2:
9:
18:
22:
25:
29:
33:
41:
43:
44:
45:
46:

.

        匹配一个任意的字符,如a..b会显示包含a某某b的所有行

[root@hadoop-master etc]# cat passwd | grep -n r..t
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

*

        不单独使用,与上一个字符连用,表示匹配上一个字符连续出现0次,1次或多次,如ro*t会匹配rt、rot、root、rooot。。。等所在的所有行

        .*:任意字符出现任意次,空字符串也能匹配到

[root@hadoop-master etc]# cat passwd | grep -n ^z.*bash$
23:zxd:x:1001:1001::/home/zxd:/bin/bash

字符区间

[ ] 表示匹配某个范围内的一个字符

[6,8]------匹配 6 或者 8

[0-9]------匹配一个 0-9 的数字

[0-9]*------匹配任意长度的数字字符串

[a-z]------匹配一个 a-z 之间的字符

[a-z]* ------匹配任意长度的字母字符串

[a-c, e-f]-匹配 a-c 或者 e-f 之间的任意字符

 \

        \表示转义,并不会单独使用。由于所有特殊字符都有其特定匹配模式,而我们刚好想匹配特殊字符本身时,就会碰到困难。

        此时我们就要 将转义字符和特殊字符连用,再加上单引号引起来,来表示特殊字符本身,例如一个对于脚本,找出所有包含 '$' 的行

三、示例

        正则匹配手机号

        注意点:shell中的 -E 表示支持扩展的正则表达式,本身是不支持部分规则的,如{}


http://www.ppmy.cn/server/134361.html

相关文章

基于 vue 快速上手 React

1. Hook 函数 a. useState(响应式数据) import {useEffect,useState} fromm "react" function App(){const [data,setData]useState(0)const setClick()>{// 1.普通修改setData(data1)// 2.多次修改,因为 setData 是异步修改 …

Web3应用场景大揭秘:区块链技术的创新与突破

随着互联网技术的不断发展,Web3已经成为未来网络的一个重要趋势。这一阶段的互联网不仅仅是对信息的存取和传递,更是强调去中心化和用户控制的生态体系。区块链技术作为Web3的核心支柱,正通过各种应用场景推动互联网的创新与突破。本文将揭秘…

基于Matlab 疲劳检测系统

Matlab 疲劳检测系统【源码 GUI】 疲劳检查可以根据眼睛和嘴巴的张合度来判断是否疲劳 一、源代码 function varargout GUI(varargin) % GUI MATLAB code for GUI.fig % GUI, by itself, creates a new GUI or raises the existing % singleton*. % % …

安全见闻(3)——开阔眼界,不做井底之蛙

内容预览 ≧∀≦ゞ 安全见闻三:脚本程序与病毒声明导语脚本语言BAT/PowerShell脚本木马与宏病毒脚本病毒BIOS病毒 结语 安全见闻三:脚本程序与病毒 声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只…

faiss向量数据库实现rag

1)环境准备 !pip install sentence-transformers transformers faiss-gpu 2)代码实现 import faiss import numpy as np from sentence_transformers import SentenceTransformer from transformers import GPT2LMHeadModel, GPT2Tokenizer# 1. 加载 …

ubuntu clash 配合smartdns

下载安装clash 下载安装smartdns github 下载地址 配置 配置smartdns 设置smartdns配置端口,修改为没有占用的端口号,其他的都不用修改,官方推荐默认参数最佳! 编辑vim /etc/smartdns/smartdns.conf server-name smartdns b…

Mac book英特尔系列?M系列?两者有什么区别呢

众所周知,Mac book有M系列,搭载的是苹果自研的M芯片,也有着英特尔系列,搭载的是英特尔的处理器,虽然从 2020 年开始,苹果公司逐步推出了自家研发的 M 系列芯片,并逐渐将 MacBook 产品线过渡到 M…

探索云计算:AWS、Azure、GCP云服务提供商详解

随着信息技术的飞速发展,云计算已成为企业数字化转型的重要支撑。AWS、Azure和GCP是当前市场上三大主要云服务提供商。本文将详细介绍这三大云服务提供商的特点、服务和使用案例,帮助企业和开发者更好地选择适合自己的云服务。 一、AWS(Amazon Web Services) AWS 是亚马逊…