sed kann Zeiche nicht durch geschütztes Leerzeichen ersetzen

FatManStanding

Lieutenant
Registriert
Aug. 2021
Beiträge
670
Hallo,

ich habe hier ein merkwürdiges Problem. Ich habe einen String der die Kapazität von Datenträgern anzeigt. Hier soll ein geschütztes Leerzeichen eingefügt werden. Der String sieht z. B. so aus:

Code:
100,0 GB

Wenn ich da jetzt

Code:
echo "$var" | sed 's/_/ /g'

ausführe wird zwar das geschützte Leerzeichen eingefügt, das normale aber nicht gelöscht:

Code:
100,0 nbsp;GB

Ersetze ich z. B. durch einen Unterstrich, geht alles:

Code:
echo "$var" | sed 's/_/ /g'
100,0_GB

Ich habe das gleiche Problem, wenn ich statt des normalen Leerzeichens den Unterschrift ersetzen will. Dann ist das Ergebnis nicht

Code:
100,0nbsp;GB

sondern

Code:
100,0_nbsp;GB

"Macht" das geschützte Leerzeichen hier etwas anders?
 
Hi,

bin zwar kein Profi, was sed angeht, aber der erste Treffer bei Google sagt mir, dass das &-Zeichen ein Special Character ist, und er das gefunden Ergebnis verwendet.
Du musst das &-Zeichen also escapen
 
Was ist ein "geschütztes Leerzeichen"?

Ansonsten das Kapitel über Quoting lesen: https://linux.die.net/man/1/bash

BTW: (Keine Ahnung ob das dein Ziel ist, du hast ja nicht klar gesagt was du erreichen willst)

Code:
$ echo "100,0 GB" | sed 's/ /\ /g'
100,0 GB
$
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Helge01 und Fusion.Tio
Ein
Code:
sed 's/nbsp;//g'
sollte eigentlich reichen.

Vermutlich habe ich das falsch verstanden, denke die Lösung wird eher die von @foofoobar sein.

 
Zuletzt bearbeitet:
normales Leerzeichen:
Irgendein Wissenschaftliches Papier, in dem irgendwas über Informatik drin steht und am Ende der Zeile steht dann 1.024 GB

geschütztes Leerzeichen:
Irgendein Wissenschaftliches Papier, in dem irgendwas über Informatik drin steht und am Ende der Zeile steht dann
1.024 GB

Weitere Beispiele (Quelle Wikipedia):
  • „St. Ulrich“ → St. Ulrich
  • „Hl. Afra“ → Hl. Afra
  • „Ludwig II.“ → Ludwig II.
  • „Version 3“ → Version 3
  • „14. Jahrhundert“ → 14. Jahrhundert
  • „30. Juni“ → 30. Juni
  • „B 17“ → B 17
  • „S. 18 ff.“ → S. 18 ff.
  • „A 96“ → A 96.
 
Fusion.Tio schrieb:
Schützt den String davor, an dieser Stelle automatisch umzubrechen.

100,0 GB
ist halt einfach schöner als
100,0
GB

klugscheissmodus an
Wenn du ein Komma als Dezimaltrenner verwendest, bist zu im deutschen Sprachraum.
Hier wäre es sowieso falsch, das GB per Leerzeichen abzutrennen.
Korrekt wäre in D:
Code:
100,0GB
EN/US:
Code:
100.0 GB

Das gilt allerdings nur für Einheitenkürzel, nicht wenn die Einheit ausgeschrieben wird:
Code:
5W
5 Watt
100,0GB
100,0 Gigabyte

Irgendein Wissenschaftliches Papier, in dem irgendwas über Informatik drin steht und am Ende der Zeile steht dann 1.024 GB
Das wären 1,024GB da US Schreibweise. Wenn das 1024 Gigabyte sein sollen, dann müsste da 1.024GB stehen.

klugscheissmodus aus
 
h00bi schrieb:
Hier wäre es sowieso falsch, das GB per Leerzeichen abzutrennen.
Sicher? Ist das vielleicht eine regionale Eigenheit?

Soweit ich weiß, muss man generell zwischen Zahl und Einheit ein Leerzeichen setzen. Die einzige mir bekannte Ausnahme ist das Grad-Symbol °. Das muss ohne Leerzeichen hinter der Zahl geschrieben werden, aber auch nur dann wenn keine Einheit angegeben wird.

Richtig34°34_°C
Falsch34_°34°_C34°C
 
  • Gefällt mir
Reaktionen: Fusion.Tio
h00bi schrieb:
klugscheissmodus an
Wenn du ein Komma als Dezimaltrenner verwendest, bist zu im deutschen Sprachraum.
Hier wäre es sowieso falsch, das GB per Leerzeichen abzutrennen.

Kannst du mir hier die nötigen Quellen nennen?
Ich kenne die Thematik eben genau anders

Abkürzungen sind wie ausgeschriebene Worte zu behandeln und dementsprechend explizit mit einem Leerzeichen abzutrennen.

Wenn ich alleine die CB-News-Einträge durchforste, sehe ich ausschließlich Titel mit abgetrenntem Leerzeichen
 
  • Gefällt mir
Reaktionen: Krik
Bash:
echo "100,0 GB" | sed 's/ /'"$(printf '\u00A0')"'/g'

Das klappt bei mir. \u00A0 ist das geschützte Leerzeichen in Unicode.
 
h00bi schrieb:
Wenn du ein Komma als Dezimaltrenner verwendest, bist zu im deutschen Sprachraum.
Hier wäre es sowieso falsch, das GB per Leerzeichen abzutrennen.
Letzteres ist falsch: Nur SI-Einheiten trennt man nicht.

foofoobar schrieb:
Die Rune heißt ‚Spatium‘ und ist keineswegs obskur.
 
  • Gefällt mir
Reaktionen: rarp
Jawohl schrieb:
Zumindest im deutschen Sprachraum sollte zwischen Zahl und Einheit ein Leerzeichen stehen, dabei spielt es keine Rolle, ob es eine SI-Einheit ist oder nicht.
Unnötige typisch deutsche Bürokratie, wo bleibt die Kettensäge?
 
Das ist ja noch simpel. Wenn ich da an die Zitierregeln meiner Fakultät denke, wird mir noch immer anders ...
 
Zurück
Oben