Linux中正则的运用
实验条件
- /bin/bin/zsh中 或 /bin/bash使用
- 正则表达式元字符
数字实例(锚定前后数字)
使用seq生成数据 开头和结尾
seq 20 2 100 | head -5
Desc:
这条命令用于生成从 20 到 100 之间的等差数列,步长为 2,并且只输出前 5 个数。
- `seq 20 2 100`: 这个部分生成了一个从 20 开始,以 2 为步长,到 100 结束的等差数列。
- `|`: 管道符号,将前一个命令的输出传递给下一个命令。
- `head -5`: 这个部分表示只取输出结果的前 5 行。
seq 20 2 100 | grep '5'
过滤包含数字5的数据,还可以重定向到指定文件
例:
seq 20 2 100 | grep '5' > test.txt
现在来匹配正则过滤
seq 20 2 100 | grep '^5'
显示数字开头为5的数字
seq 20 2 100 | grep '2$'
显示数字尾数为5的数字
seq 20 2 100 | grep -E '^5|2$'
这里是使用-E 是使用 拓展的版本
表示和数字和字母
先使用vi编辑器构造一个类似于此的文本
cat x.txt|grep -E '^[0-9]$' --color
grep -E '^[0-9]$' --color: 使用 grep 工具进行模式匹配。
-E: 启用扩展正则表达式。
'^[0-9]$': 正则表达式,匹配一个单独的数字(0 到 9)的行。
--color: 使匹配的文本显示为彩色。
seq 100 |grep -E '^[0-9][0-3]$' --color
选择第一位为[0-9]、第二位为[0-3]的数
seq 100|grep -E '(^[0-9]{2}$)|(^[0-9]{3})'
前一个 `^[0-9]{2}$` 是0-9的任意数字 {2}$ 匹配两次
后一个 `(^[0-9]{3})` 是0-9的任意数字 {3} 匹配三次
文字
先使用vi创建如下文本 file
I had a lovely time on our little picnic.
Lovers were all around us. It is springtime. Oh
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them? I can only hope love.
is forever. I live for you. It's hard to get back in the
groove.