Antworten:
Das Löschen aller Leerzeichen kann eine der folgenden Ursachen haben:
0x20
.\t
".\n
" Newline und andereWenn sed
es aus irgendeinem versteckten Grund nicht erforderlich ist, verwenden Sie besser das richtige Werkzeug für den Job.
Der Befehl tr
wird hauptsächlich zum Übersetzen (daher der Name "tr") einer Liste von Zeichen in eine Liste anderer Zeichen verwendet. Als Eckfall kann es in eine leere Liste von Zeichen übersetzt werden. Mit der Option -d
( --delete
) werden die in der Liste angezeigten Zeichen gelöscht.
Die Liste der Zeichen kann Zeichenklassen in der [:...:]
Syntax verwenden.
tr -d ' ' < input.txt > no-spaces.txt
tr -d '[:blank:]' < input.txt > no-spaces.txt
tr -d '[:space:]' < input.txt > no-spaces.txt
sed
Bei sed muss die [:...:]
Syntax für Zeichenklassen mit der Syntax für Zeichensätze in regulären Ausdrücken kombiniert werden [...]
, was zu etwas Verwirrung führt [[:...:]]
:
sed 's/ //g' input.txt > no-spaces.txt
sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
sed 's/[[:space:]]//g' input.txt > no-spaces.txt
tr -d ' ' < input.txt > no-spaces.txt
.
tr
jetzt beheben . (Sehen Sie es woanders?)
Sie können dies verwenden, um alle Leerzeichen zu entfernen in file
:
sed -i "s/ //g" file
man sed | sed "s/ //g"
/
durch ein anderes Zeichen ersetzen , z. B .:sed "ss ssg"