grep如何匹配一些字母或行尾



我有一些文件的行如下:

vi
vi-sw600dp
ddnki
xhdpi

我想使用grep只匹配行的开头有两个字母的行,然后字母是短划线或无(新行)。

所以输出将是这样的:

vi
vi-sw600dp

我试着这样做:

grep '^[A-Za-z]{2}[-n]'

我想,它匹配两个起始字母a-z,a-z的行,然后用破折号或换行。但它不起作用。\n不是假定的新行,而是字符,所以它会出现以下情况:

vi
vi-sw600dp
ddnki

你能帮帮我吗?谢谢

你很接近。您需要使用线尾锚$而不是n$不能是字符组的一部分,因此应该使用原子分组:

 grep '^[A-Za-z]{2}(-|$)'

或使用-E:

grep -E '^[A-Za-z]{2}(-|$)'

相关内容

  • 没有找到相关文章

最新更新