第二十四天笔记

第二十四天笔记

for 和 select 循环语句的应用实践

Linux 系统产生随机数的方法

bash 复制代码
[han@han-shell ~]$ echo "han$RANDOM"|md5sum |cut -c 1-8
884075a2

Linux 正则表达式

环境准备

bash 复制代码
[han@shell ~]$ vim words
cat
category
acat
concatenate
dog

普通字符

bash 复制代码
[han@shell ~]$ cat words |grep 'cat'
cat
category
acat
concatenate

字符集

...

匹配 ... 中的任意一个字符。

bash 复制代码
[han@shell ~]$ echo cbt >> words
[han@shell ~]$ echo c1t >> words
[han@shell ~]$ cat words | grep 'c[ab]t'
cat
category
acat
concatenate
cbt
a-z A-Z 0-9
bash 复制代码
[han@shell ~]$ cat words | grep 'c[a-z]t'
cat
category
acat
concatenate
cbt
[han@shell ~]$ echo cCt >> words
[han@shell ~]$ cat words | grep 'c[A-Z]t'
cCt
[han@shell ~]$ cat words | grep 'c[0-9]t'
c1t
[han@shell ~]$ cat words | grep 'c[a-z0-9]t'
cat
category
acat
concatenate
cbt
c1t
[han@shell ~]$ cat words | grep 'c[a-zA-Z0-9]t'
cat
category
acat
concatenate
cbt
c1t
cCt
# 要想匹配-符号,将改符号写在第一个位置
[han@shell ~]$ echo c-t >> words
[han@shell ~]$ cat words | grep 'c[-a-zA-Z0-9]t'
cat
category
acat
concatenate
cbt
c1t
cCt
c-t
\^...

匹配除了 ... 中字符的所有字符。

bash 复制代码
[han@shell ~]$ cat words | grep 'c[^ab]t'
c1t
# ^放中间会被当做普通字符
[han@shell ~]$ cat words | grep 'c[a^b]t'
cat
category
acat
concatenate
cbt
.

匹配除换行符( \n 、 \r )之外的任何单个字符,相等于 \^\\n\\r

bash 复制代码
[han@shell ~]$ cat words | grep 'c.t'
cat
category
acat
concatenate
cbt
c1t
cCt
c-t
\

将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。

bash 复制代码
[han@shell ~]$ echo c.t >> words
[han@shell ~]$ cat words | grep 'c\.t'
c.t
# 匹配普通字符,虽然可以匹配,但强烈建议不要在前面加\
[han@shell ~]$ cat words | grep 'c\at'
cat
category
acat
concatenate
|

| 符号是扩展表达式中元字符,指明两项之间的一个选择。要匹配 | ,请使用 |

bash 复制代码
# 使用egrep或者grep -E 匹配
[han@shell ~]$ cat words | egrep 'cat|dog'
# 或者
[han@shell ~]$ cat words | grep -E 'cat|dog'
cat
category
acat
concatenate
dog

定位符

^

匹配行首位置。

bash 复制代码
[han@shell ~]$ cat words | grep '^cat'
cat
category
$

匹配行末位置。

bash 复制代码
[han@shell ~]$ cat words | grep 'cat$'
cat
acat
[han@shell ~]$ cat words | grep '^cat$'
cat
\b

匹配一个单词边界

bash 复制代码
[han@shell ~]$ echo hello cat >> words
[han@shell ~]$ cat words | grep '\bcat'
cat
category
hello cat
[han@shell ~]$ cat words | grep 'cat\b'
cat
acat
hello cat
[han@shell ~]$ cat words | grep '\bcat\b'
cat
hello cat
\B

非单词边界匹配

bash 复制代码
[han@shell ~]$ cat words | grep '\Bcat'
acat
concatenate

限定次数

*

匹配前面的子表达式任意次数

bash 复制代码
[han@shell ~]$ echo dg >> words
[han@shell ~]$ echo doog >> words
[han@shell ~]$ cat words | grep 'do*g'
dog
dg
doog
?

? 是扩展表达式元字符,匹配前面的子表达式一次以下次数

bash 复制代码
[han@shell ~]$ cat words | egrep 'do?g'
dog
dg
{n}

{} 是扩展表达式元字符,用于匹配特定次数。例如: {n} ,配置n次。

bash 复制代码
[han@shell ~]$ cat words | egrep 'do{2}g'
doog
{m,n}

{m,n} ,是扩展表达式元字符,用于匹配次数介于m-n之间。

bash 复制代码
[han@shell ~]$ echo dooog >> words
[han@shell ~]$ echo doooog >> words
[han@shell ~]$ cat words | egrep 'do{2,3}g'
doog
dooog
{m,}

{m,} ,是扩展表达式元字符,匹配前面的子表达式m次以上次数。

bash 复制代码
[han@shell ~]$ cat words | egrep 'do{2,}g'
doog
dooog
doooog
{,n}

{,n} ,是扩展表达式元字符,匹配前面的子表达式n次以下次数

bash 复制代码
[han@shell ~]$ cat words | egrep 'do{,3}g'
dog
doog
dg
dooog
**思考: **

如何过滤出以下文件中所有有效IPv4地址?

bash 复制代码
'\b(([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)(([0-9]|[1-9][0-
9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-
4][0-9]|25[0-5])\b'
相关推荐
Shell运维手记8 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
FakeOccupational9 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
动词ing9 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
z落落11 小时前
C# Modbus-ASCII 超详细完整笔记(协议原理+LRC算法+读写源码全拆解)
笔记
hanlin0313 小时前
刷题笔记:力扣第189题-轮转数组
笔记·算法·leetcode
xqqxqxxq14 小时前
Redis 五大常用数据类型 + 通用命令笔记
数据库·redis·笔记
zjnlswd14 小时前
c# 刘铁猛 学习笔记
笔记·学习
LuminousCPP14 小时前
单链表专题(三)-刷题复盘篇:从快慢指针到环形链表 II 数学推导
数据结构·经验分享·笔记·学习·算法·链表
3A Cloud15 小时前
从「心即理」到提示词工程:深度解析 ClawHub 上的阳明心学技能(yangming-xinxue)
人工智能·笔记
你想知道什么?15 小时前
朴素贝叶斯算法-学习笔记
笔记·学习·算法