在行尾使用grep中的regex进行模式matchin

时间:2019-05-21 10:05:09

标签: 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

请让我知道我在这里想念的东西。

1 个答案:

答案 0 :(得分:0)

您需要添加一种方法来检测您是否想要匹配,否则它匹配行的一部分,例如$以精确定位字符串的末尾,或{{1} }(相当于[[:space]])。

我不是grep的专家,取决于它是否采用多行处理,其中之一应该有效:

\s