Eu quero um padrão regex que pode imprimir todas as linhas que não contenham pontuação:
Entrada :
.This is line 1
This is ! line 2
This is line (3)
This is line 4
Saída: (deve ser)
This is line 4
O que eu tentei até agora:
grep '[^[:punct:]]' file.txt
Mas mostra todos os caracteres que não são pontuação.
grep
regular-expression
Hamed Kamrava
fonte
fonte
-v
switch?-v
?-v
apenas quer saber mais :)No sed, você pode fazer algo como:
sed '/[[:punct:]]/!d'
No awk você pode fazer:
awk '!/[[:punct:]]/'
fonte
Uns
Perl
:Isso corresponderá a -! "# $% & '() * +,. / :; <=> ? @ [\] ^ _` {|} ~ Que unicode considera Pontuação e Símbolos.
ou:
\p{Punct}
corresponde apenas a -! "#% & '() *,. /:;? @ [\] _ {} , faltando $ + <=> ^` | ~ que unicode considera Símbolos.perl
por padrão, use o código do idioma POSIX. Se você não usarperl
, tudo deve ser definidoLC_ALL=POSIX
, porque localidades diferentes podem ter caracteres de pontuação diferentes, comoSAA C
possui¢
.fonte