Ich habe eine Datei mit folgenden Zeilen:
...
... <230948203[234]>, ...
... <234[24]>, ...
..
Ich möchte sed verwenden, um die Zeichen <
,
und >
aus jeder Zeile zu entfernen
Ich habe versucht, sed 's/<>,//g'
aber es hat nicht funktioniert (es hat nichts geändert). Muss ich diesen Sonderzeichen entkommen? Ist es möglich, mehrere Zeichen mit einem einzigen sed
Befehl zu löschen ?
bash-3.2$ echo "<230948203[234]>," | tr '<>,' ' '
-> 230948203 [234] -EDITED Thanks to Paul
tr -d '<>,' ''
(wie in Chris Downs Antwort).tr -d '<>,'
ohne '' am Ende nicht?Antworten:
Mit
sed
:Mit
tr
:quelle
|
als Trennzeichen etwas verwirrend.sed 's/[<>]//g'
ist etwas leichter zu lesen.|
es viel weniger mit dem Wörtlichen zu tun (und muss ihm daher entkommen) als mit dem Wörtlichen/
.|
ist es auch oft ein Metazeichen , das in einigen Regexp-Syntaxen zur Abwechslung verwendet wird (obwohl diessed
insbesondere erforderlich ist\|
). Persönlich verwende/
ich normalerweise,
als Trennzeichen , wenn ich mit wörtlichen Zeichen umgehen muss .printf 'a\nb\nc\n' | sed -n '\|a|,\|b|p'
Probier diese:
sed 's/[<>,]//g'
quelle
|
s nicht in dir[]
. verwenden's/[<>,]//g'
.sed 's/[<>,]/ /g'
wird genau funktionieren, war gut, außer Ihre Idee wird vertikale Balken ebenso entfernen.