Я хочу шаблон регулярного выражения, который может печатать все строки, которые не содержат пунктуации:
Вход:
.This is line 1
This is ! line 2
This is line (3)
This is line 4
Вывод: (должно быть)
This is line 4
Что я пробовал до сих пор:
grep '[^[:punct:]]' file.txt
Но он показывает все символы, которые не являются пунктуацией.
grep
regular-expression
Хамед Камрава
источник
источник
-v
переключателя?-v
?-v
просто хочу знать больше :)В sed вы можете сделать что-то вроде:
sed '/[[:punct:]]/!d'
В awk вы можете сделать:
awk '!/[[:punct:]]/'
источник
А
Perl
:Это будет соответствовать -! "# $% & '() * +,. / :; <=> ? @ [\] ^ _` {|} ~, Который в Юникоде учитывает пунктуацию и символы.
или:
\p{Punct}
только совпадения -! "#% & '() * ,. /:;? @ [\] _ {} , пропущено $ + <=> ^` | ~, которое в Юникоде учитывает символы.perl
по умолчанию используется локаль POSIX. Если вы не используетеperl
, вы должны все так установитьLC_ALL=POSIX
, потому что разные локали могут иметь разные знаки пунктуации, такие какSAA C
has¢
.источник