我有一个文件,假设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]])