我有一些文件的行如下:
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}(-|$)'