仅允许十六进制正则表达式

仅允许十六进制正则表达式

我想要一个使用 grep 命令的正则表达式,它只打印出十六进制表示的字符串。

这是我的命令:

grep "0x[A-Fa-f0-9]{1,6}" test.txt

测试.txt:

0x2a
0xF
0x1111
0x0ZZZ
0x4dz5

预期输出:

0x2a
0xF
0x1111

输出:空

这个怎么做?谢谢

答案1

{n,m}语法是扩展正则表达式集的一部分,这意味着您需要在带有-E标志的 grep 中启用它。要要求整行与十六进制表示匹配,请添加标志-x(或使用^$锚点):

grep -Ex '0x[A-Fa-f0-9]{1,6}'

或者

grep -E '^0x[A-Fa-f0-9]{1,6}$'

我还将周围的引号从双引号更改为单引号,以防止字符意外扩展$

更多关于 Stack Exchange 的正则表达式阅读:

相关内容