Entfernen Sie alle Leerzeichen aus einer Zeile

14067
Tim Alexander

Ich möchte verwenden sed, um alle spaceZeichen aus einer Textdatei zu entfernen . Zur Zeit verwende ich diesen Befehl:

sed 's/ //' test.txt > test2.txt 

Dies funktioniert in dem Sinne, dass der erste spaceBuchstabe jeder Zeile entfernt wird, der Rest jedoch übrig bleibt.

Gibt es eine Möglichkeit, die sedZeichen für eine Leerstelle in einer Zeile zu wiederholen, bevor mit der nächsten fortgefahren wird, oder ist es ein Fall, in dem mehrere Durchläufe in derselben Datei erstellt werden?

Zur Zeit ist die Datei zum Testen klein, aber in Kürze wird diese auf sehr viel größere Dateien hochgefahren, so dass ein Minimum an Spülen und Wiederholen großartig wäre. Irgendwelche Gedanken?

Zur Zeit bekomme ich das mit dem Befehl oben:

bruteforce  allthe kings men  moneymoney money  ifi was a rich girl 

Wann möchte ich folgendes:

bruteforce  allthekingsmen  moneymoneymoney  ifiwasarichgirl  
2

1 Antwort auf die Frage

6
jmz

Sie sollten das g(globale) Flag verwenden, sedum alle Übereinstimmungen des Musters in jeder Zeile und nicht die erste Übereinstimmung in jeder Zeile zu aktivieren:

sed 's/ //g' test.txt > test2.txt 
Ausgezeichnet! Was macht der g? Ist es eine Wiederholung für alle Instanzen eines Leitungsschalters oder so etwas? Tim Alexander vor 13 Jahren 0
Ja, das g-Flag sorgt dafür, dass der Regex global übereinstimmt. Ohne passt es nur zum ersten. jmz vor 13 Jahren 0