使用 grep 添加正则表达式

使用 grep 添加正则表达式

我必须使用 grep 从文本文件中找出 8 个邮政编码,每个邮政编码的字符顺序如下:1. 大写字母 2. 数字 3. 大写字母 4. 空格(可选)5. 数字 6. 大写字母 7. 数字

我使用了 grep 命令:

grep '[A-Z][0-9][A-Z][0-9+[][0-9][A-Z][0-9]'

这给了我 5 个邮政编码,其中第 4 个字符处有一个空格

我也使用过这个 grep 命令:

grep '[A-Z][0-9][A-Z][0-9\.][A-Z][0-9]'

这给了我最后 3 个邮政编码,其中第 4 个字符处没有空格。

我不知道如何编写一个命令来表明空格是可选的。谢谢

答案1

ERE 量词?表示零次或一次出现。因此

grep -E '[A-Z][0-9][A-Z] ?[0-9][A-Z][0-9]'

如果你想允许零或者更多空格,请更改?*。要允许制表符和空格,可以使用[ \t]?[[:blank:]]?或 (在 GNU grep 中)\s?

答案2

像下面这样的表达式应该有效:

grep '[A-Z][0-9][A-Z][ ]*[0-9][A-Z][0-9]' file

答案3

我的建议:

grep -P "[A-Z][0-9][A-Z][0-9][ ]{0,1}[0-9][A-Z][0-9]" file

相关内容