我试图弄清楚如何为仅由 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/

10-17 02:20