在线结束时,使用Regex在GREP中使用REGEX进行模式匹配



我有一个文件,假设abc.txt,其中包含以下类型的数据:

AB8PDSYU_DFRH
AB8PDSPO_RET
AB8PDSYT_DPRO
AB0PDSTR_GHRJT
AB0PDSQW_GTJY

我的预期输出仅为格式A{either B0 or B8}PDS{exactly 2 char}_{exactly 4 char},根据此规则,我的输出应仅为:

AB8PDSYU_DFRH
AB8PDSYT_DPRO
AB0PDSQW_GTJY

我正在使用以下grep命令:

grep -E '^A(B0|B8)PDS[[:alpha:]]{2}_[[:alpha:]]{4}' abc.txt

并获取输出:

AB8PDSYU_DFRH
AB8PDSYT_DPRO
AB0PDSTR_GHRJT
AB0PDSQW_GTJY

我已经提到了[[:alpha:]]{4},理想情况下应完全匹配4个字母。但是,它不是这样工作的,并且在输出中也给我 ab0pdstr_ghrjt

请让我知道我在这里缺少什么。

您需要添加一种方法来检测比赛之后您不再想要的,否则它与该行的一部分匹配,例如$,以精确字符串的末端,或[[:space]](相当于s(的任何空间。

我不是Grep的专家,具体取决于它是否将其视为多行,其中之一应该有效:

^A(B0|B8)PDS[[:alpha:]]{2}_[[:alpha:]]{4}$
^A(B0|B8)PDS[[:alpha:]]{2}_[[:alpha:]]{4}($|[[:space]])

最新更新