Ich möchte ein Regex-Muster, das alle Zeilen drucken kann, die keine Interpunktion enthalten:
Eingabe:
.This is line 1
This is ! line 2
This is line (3)
This is line 4
Ausgabe: (sollte sein)
This is line 4
Was ich bisher versucht habe:
grep '[^[:punct:]]' file.txt
Es werden jedoch alle Zeichen angezeigt, bei denen es sich nicht um Interpunktion handelt.
grep
regular-expression
Hamed Kamrava
quelle
quelle
-v
Schalter?-v
?-v
einfach mehr wissen zu wollen :)In sed können Sie Folgendes tun:
sed '/[[:punct:]]/!d'
In awk können Sie tun:
awk '!/[[:punct:]]/'
quelle
Eine
Perl
:Dies entspricht -! "# $% & '() * + ,. /:; <=> ? @ [\] ^ _` {|} ~ Welche Unicode-Punkte und -Symbole berücksichtigen.
oder:
\p{Punct}
stimmt nur mit -! "#% & '() * ,. /:;? @ [\] _ {} überein , wobei $ + <=> ^` | ~ fehlen, wobei Unicode Symbole berücksichtigt.perl
Verwenden Sie standardmäßig das Gebietsschema POSIX. Wenn Sie nicht verwendenperl
, sollten Sie alle so einstellenLC_ALL=POSIX
, da unterschiedliche Gebietsschemas unterschiedliche Satzzeichen haben können, wie dies der FallSAA C
ist¢
.quelle