我试图弄清楚如何为仅由 A-Z 和 a-z 组成的行(即“美国”字母表)使用 grep
。我希望这会起作用,但它不会:
$ echo -e "Jutland\nJastrząb" | grep -x '[A-Za-z]*'
Jutland
Jastrząb
我希望它只打印“Jutland”,因为 ą 不是美国字母表中的一个字母。我怎样才能做到这一点?
最佳答案
您可以使用 perl 正则表达式:
$ echo -e "Jutland\nJastrząb" | grep -P '^[[:ascii:]]+$'
Jutland
虽然它是实验性的:
-P, --perl-regexp
Interpret the pattern as a Perl-compatible regular expression (PCRE). This is experimental and
grep -P may warn of unimplemented features.
编辑
仅对于字母,使用
[A-Za-z]
:$ echo -e "L'Egyptienne\nJutland\nJastrząb" | grep -P '^[A-Za-z]+$'
Jutland
关于regex - 仅包含 "standard"美国字符的行的 grep,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57855476/