Der Befehl kann wie folgt zusammengefasst werden, wenn Sie GNU verwenden sed
:
$ sed 's/^[ \t]*//;s/[ \t]*$//' < file
Beispiel
Hier ist der obige Befehl in Aktion.
$ echo -e " \t blahblah \t " | sed 's/^[ \t]*//;s/[ \t]*$//'
blahblah
Sie können hexdump
damit bestätigen, dass der sed
Befehl die gewünschten Zeichen korrekt entfernt.
$ echo -e " \t blahblah \t " | sed 's/^[ \t]*//;s/[ \t]*$//' | hexdump -C
00000000 62 6c 61 68 62 6c 61 68 0a |blahblah.|
00000009
Zeichenklassen
Sie können auch Zeichenklassennamen verwenden, anstatt die Mengen wie folgt buchstäblich aufzulisten [ \t]
:
$ sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//' < file
Beispiel
$ echo -e " \t blahblah \t " | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//'
Die meisten GNU-Tools, die reguläre Ausdrücke (Regex) verwenden, unterstützen diese Klassen.
[[:alnum:]] - [A-Za-z0-9] Alphanumeric characters
[[:alpha:]] - [A-Za-z] Alphabetic characters
[[:blank:]] - [ \x09] Space or tab characters only
[[:cntrl:]] - [\x00-\x19\x7F] Control characters
[[:digit:]] - [0-9] Numeric characters
[[:graph:]] - [!-~] Printable and visible characters
[[:lower:]] - [a-z] Lower-case alphabetic characters
[[:print:]] - [ -~] Printable (non-Control) characters
[[:punct:]] - [!-/:-@[-`{-~] Punctuation characters
[[:space:]] - [ \t\v\f] All whitespace chars
[[:upper:]] - [A-Z] Upper-case alphabetic characters
[[:xdigit:]] - [0-9a-fA-F] Hexadecimal digit characters
Die Verwendung dieser anstelle von Literalmengen scheint immer eine Verschwendung von Speicherplatz zu sein. Wenn Sie jedoch befürchten, dass Ihr Code portierbar ist oder mit alternativen Zeichensätzen umgehen muss (denken Sie an Internationalität), sollten Sie wahrscheinlich die Klassennamen verwenden stattdessen.
Verweise