4-19 Linux中的正则表达式 --- 字符匹配

4-19 Linux中的正则表达式 --- 字符匹配,第1张

1、正则表达式和通配符有点像。区别在于通配符匹配的是文件名和目录名中的字符串,不能匹配文本中内容的字符串。而正则表达式匹配的是文本中的字符串。

2、正则表达式(REGEXP):由一类特殊字符及文本符号所编写的表达式,这种表达式的功能是匹配文本当中字符串。

3、正则表达式的特点:可以通过特殊字符及文本符号灵活组合各种过滤条件去匹配文本内容,从而达到自由度颇高的筛查方式。

4、正则表达式分两类:基本正则表达式(BRE)、扩展正则表达式(ERE),grep 加上 -E 参数就是使用 egrep。

5、元字符分类:元字符是指正则表达式中使用的特殊字符,这些特殊符号具有特定的功能。从功能上分类有:字符匹配、匹配次数、位置锚定、分组。

①、 .:匹配任意单个字符。

②、 [ ]:匹配指定范围内的任意单个字符。

③、 [^]:排除匹配指定范围内的任意单个字符。

④、 [:alnum:]:过滤字母和数字,包含了大写字母、小写字母 和 10个数字(0-9)。

⑤、 [:alpha:]:任何英文大小写字符,即 A-Z,a-z。

⑥、 [:lower:]:只过滤小写字母。

⑦、 [:upper:]:只过滤大写字母。

⑧、 [:blank:]:空白字符(空格和制表符)。

⑨、 [:space:]:水平和垂直的空白字符(比 [:blank:] 包含的范围广)。

⑩-①、 [:digit:]:十进制数字。

⑩-③、 [:graph:]:可打印的非空白字符。

⑩-④、 [:print:]:可打印字符。相当于 [:alnum:]、[:punct:] 和 space。

⑩-⑤、 [:punct:]:标点符号。

grep '^[0-9]\{1,3\}$' test.txt | grep '^[1-9]'

如果是变量

echo $var | grep '^[0-9]\{1,3\}$' | grep '^[1-9]'

$表示行尾

这个正则不匹配 12a 这样的字符串

你的变量内容是什么样的?

我用来测试的 test.txt 的内容:

123

321

123212

001

010

100

10000

0011

10101

1101

1

2

3

11

22

33

1a

2a

可以使用awk的条件筛选,这样写

awk '{if($1==13 &&$2>87632565 &&$2<89632565 &&$3>87632565 &&$3<89632565)print $0}' filename.txt >newfile.txt


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8665447.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存