我有一个文件,例如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 。
请让我知道我在这里想念的东西。
答案 0 :(得分:0)
您需要添加一种方法来检测您是否想要匹配,否则它匹配行的一部分,例如$
以精确定位字符串的末尾,或{{1} }(相当于[[:space]]
)。
我不是grep的专家,取决于它是否采用多行处理,其中之一应该有效:
\s