Ich bin mit diesem scheinbar einfach zu behebenden Problem verblüfft. Nun, für eine Weile.
Hier ist eine Beispielausgabe der Datei, die ich bearbeiten muss:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Ich muss die Leerzeichen zwischen "George Washington" und "Genfer Konvention" entfernen, aber nicht die Leerzeichen zwischen "123.281.029 USD" oder "342.019.929 EUR".
Im Wesentlichen ist mein Ziel hier, den Abstand zwischen Wörtern in einer Zeile NUR dann zu entfernen, wenn diese Zeile keine Zahlen enthält.
Ich habe versucht, die Datei über zu bearbeiten grep -v [0-9] $file | sed 's/ //'
, aber das funktioniert nur, wenn ich in eine andere Datei ausgebe. Dies würde jedoch bedeuten, dass alle Zeilen mit Zahlen aus der alten Datei in die neue Datei ausgeschlossen werden, was nicht erforderlich ist.
Ich habe einige ziemlich lächerliche Loops mit grep ausprobiert und sed
aber nichts scheint genau richtig zu funktionieren.
Auch hier ist die Beispielausgabe der Datei:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Hier ist meine gewünschte Ausgabe:
$cat file
GeorgeWashington
GenevaConvention
123,281,029 USD
342,019,929 EUR
Verwenden von
perl
:quelle
Entfernen Sie für einen allgemeineren Ansatz nur die Leerzeichen zwischen zwei Buchstaben. Auf diese Weise kann es auch dann funktionieren, wenn Zeilen Ziffern haben. Die Leerzeichen um die Zahlen werden einfach ignoriert:
Das wird zum Beispiel drehen
George and Harry 12 EUR
zuGerogeandHArry 12 EUR
und nach wie vor richtig für die Fälle , in Ihrem Beispiel arbeiten.quelle