在 Grep 列表中查找包含 2 个数字和 2 个字母的文本

在 Grep 列表中查找包含 2 个数字和 2 个字母的文本

我有一个从 0000 到 FFFF 的十六进制数字列表。

我试图解析列表以仅包含带有 2 个数字 0-9 和 2 个字母 AF 的文本,但没有成功。我一直尝试egrep -v [0-9]{3}将结果输出到一个文件中,以为可以找到没有 3 个数字的任何条目,然后获取该文件并执行egrep -v [0-9]{4}上一个命令的输出,但这不起作用,因为我仍然有带有 3 和 4 个数字的条目。我原本打算运行egrep -v [A-F]{3}egrep -v [A-F]{4}过滤其余内容,但仍然不起作用。

任何建议将不胜感激。

答案1

创建如下文件

~$ cat Patterns.txt 
[0-9][0-9][A-F][A-F]
[0-9][A-F][0-9][A-F]
[0-9][A-F][A-F][0-9]
[A-F][A-F][0-9][0-9]
[A-F][0-9][A-F][0-9]
[A-F][0-9][0-9][A-F]
~$ 

这是示例输入

~$ cat HEX.txt 
FFFF
08FF
F0AA
FF08
0F0F
F0F0
~$ 

这是示例输出

~$ grep -f Patterns.txt HEX.txt 
08FF
FF08
0F0F
F0F0

解释:

你的情况只有 6 种可能的组合

Number, Number, Letter, Letter
Number, Letter, Number, Letter
Number, Letter, Letter, Number
Letter, Letter, Number, Number
Letter, Number, Letter, Number
Letter, Number, Letter, Letter

我们将所有这些组合存储起来,Patterns.txt并要求 grep 使用这些模式从中查找值HEX.txt

相关内容