2

我有一些带有这样行的文件:

vi
vi-sw600dp
ddnki
xhdpi

我想使用 grep 仅匹配行首有两个字母的行,之后字母为破折号或无(新行)。

所以输出将是这样的:

vi
vi-sw600dp

我尝试这样的事情:

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

我希望,它匹配带有两个起始字母 az、AZ 的行,然后是破折号或换行符。但它不起作用。\n 不是假定换行而是字符,所以它输出如下:

vi
vi-sw600dp
ddnki

你能帮我么?谢谢。

4

1 回答 1

3

你很亲密。您需要使用行尾锚点$而不是\n. $不能是字符组的一部分,因此您应该改用原子分组:

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

或与-E

grep -E '^[A-Za-z]{2}(-|$)'
于 2013-02-06T23:31:57.563 回答