Code: Alles auswählen
sed s/$'\u201E'/°/g test.txt > test-neu.txt
Grüße, Günther
Code: Alles auswählen
sed s/$'\u201E'/°/g test.txt > test-neu.txt
Code: Alles auswählen
#!/bin/bash
sed s/$'\u201E'/°/g test.txt > test-neu.txt
Code: Alles auswählen
tr $'\u201E' ° <test.txt >test-neu.txt
Code: Alles auswählen
#!/bin/sh
Code: Alles auswählen
#!/bin/bash
Code: Alles auswählen
#!/bin/sh
Code: Alles auswählen
$'\u201E'
Ein erster Ansatzpunkt waere, in der Manpage der Bash nach $' und nach \u zu suchen. Da wirst du sicherlich fuendig werden.guennid hat geschrieben:17.10.2019 13:07:42Kann mir jemand dieses Konstrukt erklären:Ich meine zu wissen, dass '$' anzeigt, dass der nachfolgende Ausdruck als Variable gehandelt wird und zwar, dass deren Inhalt genommen werden soll, aber welche Bedeutung der Backslash und die beiden Hochkommas da haben, weiß ich nicht. Dass 'u201E' wiederum die hexadezimale utf-8-Nummer für '„' ist, meine ich ebenfalls herausgefunden zu haben.Code: Alles auswählen
$'\u201E'
\u:Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard.
Ein wenig Englisch kann ich. Dies hier versteh' ich im gegebenen Zusammenhang nicht. Und ich befürchte, ein englischsprachiger Nichtinformatiker versteht's auch nicht.Prompting
When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
[...]
\u
the username of the current user
Hast du eine veraltete Manpage?
Code: Alles auswählen
\uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
HHHH (one to four hex digits)
Mag sein, ich habe Meillo beim Browser beim Wort genommen: https://linux.die.net/man/1/bash. Mit dem Durchsuchen von Terminalausgaben tu' ich mich als Laie schwer.MSfree hat geschrieben:Hast du eine veraltete Manpage?
Das glaubte ich, war mir klar. Ich hätte das davorstehende 'u' in meiner Tumbheit allerdings für einen Bestandteil des Unicode-Wertes gehalten.MSfree hat geschrieben:Und "201E dürfte der Unicode-Wert für dein "untenliegendes Gänsefüßchen" sein
Ist eigentlich gar nicht so schwer:guennid hat geschrieben:17.10.2019 16:08:47Mit dem Durchsuchen von Terminalausgaben tu' ich mich als Laie schwer.
Warum gibst du dann das Zeichen nicht einfach direkt ein?guennid hat geschrieben:17.10.2019 16:39:44Im Grunde ist jedermann eh klar, was hier Sache ist: sed soll „Gänsefüßchen“ ersetzen. Verstehen will ich, wieso das hier eines Dollarzeichens, eines Backslashes, eines 'u's und zweier "Luftkommas" bedarf. .
Es ist nicht einfach, in einer Zeichenmenge, die korrekte Unterteilung durchzufuehren.guennid hat geschrieben:17.10.2019 16:08:47Das glaubte ich, war mir klar. Ich hätte das davorstehende 'u' in meiner Tumbheit allerdings für einen Bestandteil des Unicode-Wertes gehalten.MSfree hat geschrieben:Und "201E dürfte der Unicode-Wert für dein "untenliegendes Gänsefüßchen" sein
Es ist nunmal so, dass dies ein komplexes Thema ist, das man nur verstehen kann, wenn man es zerlegt, die Bestandteile kennenlernt, die einzeln verstehen lernt, ihre Zusammenhaenge verstehen lernt ... Hoelzchen und Stoeckchen.guennid hat geschrieben:17.10.2019 16:08:47Merkst du's: Statt die Frage zu klären, kommen wir von Hölzchen auf Stöckchen.
Weil, wenn du dich an unseren kleinen Disput aus der Vergangenheit erinnerst, mir das - auch durch den Dialog mit eggy - nicht immer, nicht bei jedem Zeichen machbar erschien, jedenfalls nicht für meine Zwecke. Dafür möchte ich gewappnet sein. - Ich muss UTF8-Dateien in DOS-ASCII konvertieren und zwar aus einem DOS-Programm heraus. Das war damals schon der Grund, warum auch eggy von tr abkam und mich bei sed unterstützt hatte. Und ich krieg's sogar hin. Ich werde dich auch wohl noch weiter nerven mit Code-Optimierung, aber zunächst mal verstünde ich halt gern, was ich so tue.Meillo hat geschrieben:Warum gibst du dann das Zeichen nicht einfach direkt ein?
Ich dachte, mich an deine Angaben gehalten zu haben. Und bisher hat mir auch keiner gesagt, dass ich sie falsch verstanden habe. Aber sie haben mich bisher keiner Antwort auf meine Fragen näher gebracht.Meillo hat geschrieben:Zudem habe ich dir gesagt, welche Manpage die richtige ist.
Nehm' ich zur Kenntnis und wüsste trotzdem gerne, welche es denn nun im konkreten Zusammenhang hat. Und ich behaupte, das kann ich durchaus verstehen, auch ohne die anderen Kontexte zu verstehen, wenn man's mir denn erklärt - was man nicht muss.Meillo hat geschrieben:Das Dollarzeichen hat verschiedene Bedeutungen, je nach Kontext.
Vermutlich war die Online-Manpage halt von einer aelteren Version der Bash. Hast du die Versionsangabe verglichen? Es gibt verschiedene Online-Manpages-Websites, die, wie es aussieht, unterschiedliche Versionen der Manpage bereitstellen.guennid hat geschrieben:17.10.2019 17:44:26Ich dachte, mich an deine Angaben gehalten zu haben. Und bisher hat mir auch keiner gesagt, dass ich sie falsch verstanden habe. Aber sie haben mich bisher keiner Antwort auf meine Fragen näher gebracht.Meillo hat geschrieben:Zudem habe ich dir gesagt, welche Manpage die richtige ist.
Das genau steht ja in der Manpage, darum nur schlagen wir dort ja nach.Nehm' ich zur Kenntnis und wüsste trotzdem gerne, welche es denn nun im konkreten Zusammenhang hat.Meillo hat geschrieben:Das Dollarzeichen hat verschiedene Bedeutungen, je nach Kontext.
Code: Alles auswählen
Words of the form $'string' are treated specially. The
word expands to string, with backslash-escaped characters
replaced as specified by the ANSI C standard. Backslash
escape sequences, if present, are decoded as follows:
[...]
\uHHHH the Unicode (ISO/IEC 10646) character whose
value is the hexadecimal value HHHH (one to
four hex digits)
[...]
The expanded result is single-quoted, as if the dollar
sign had not been present.
Geht es dir also um das Uebersetzen der technischen Sprache der Manpage in eine einfachere Sprache? Oder um etwas anderes?Und ich behaupte, das kann ich durchaus verstehen, auch ohne die anderen Kontexte zu verstehen, wenn man's mir denn erklärt - was man nicht muss.
Auf jeden Fall. Im Büro habe ich noch ein Lenny laufen, das auf man bash die Unicodegeschichte auch nicht zeigt. Meine Kisten zuhause, die unter Jessie und neuer laufen, beschreiben die \uHHHH Option.Meillo hat geschrieben:17.10.2019 18:01:06Vermutlich war die Online-Manpage halt von einer aelteren Version der Bash.
Mit der Frage weiß ich nichts anzufangen. Es geht mir, wie schon gesagt, um eine für mich nachvollziehbare Erläuterung des Ausdrucks (sed s/$'\u201E'). Die manpage liefert dazu via der von Meillo vermittelten Suchbegriffe $' und \u einige Hinweise, die mir aber nicht genügen, sprich, die ich nicht für allgemeinverständlich halte. Eine Hauptschwierigkeit scheinen mir die Ausdrücke quotieren und expandieren darzustellen, deren Bedeutung in der Informatik offenbar von der allgemeinen abweicht, wobei ich noch unschlüssig bin, ob die Schwierigkeiten nicht auch daher rühren, dass die Begriffe - je nach Kontext - dasselbe meinen können.Meillo hat geschrieben:Geht es dir also um das Uebersetzen der technischen Sprache der Manpage in eine einfachere Sprache?
Nur weils mich interessiert: Kannst du mal ausprobieren ob die bash aus lenny das schon kann? AlsoMSfree hat geschrieben:17.10.2019 18:55:43Auf jeden Fall. Im Büro habe ich noch ein Lenny laufen, das auf man bash die Unicodegeschichte auch nicht zeigt. Meine Kisten zuhause, die unter Jessie und neuer laufen, beschreiben die \uHHHH Option.
Code: Alles auswählen
echo $'\u201E'
Code: Alles auswählen
sed s/$(/usr/bin/printf '\u201E')/°/g test.txt > test-neu.txt
Code: Alles auswählen
sed -E 's,\xe2\x80\x9e,a,g'
Ja! Die Folgen von Builtins habe ich immer wieder kritisiert. Aber Builtins nehmen leider eher zu als ab.wanne hat geschrieben:22.10.2019 14:25:03Edit: Wtf: printf ist ne dash extention... Mann muss mit vollem Pfad aufrufen, damit die das echte Programm nimmt.
Das Ergebnis lautet:wanne hat geschrieben:22.10.2019 14:25:03Nur weils mich interessiert: Kannst du mal ausprobieren ob die bash aus lenny das schon kann? AlsoCode: Alles auswählen
echo $'\u201E'
Code: Alles auswählen
\u201E
Welche Version der Bash ist das in Lenny (Debian 5)?MSfree hat geschrieben:22.10.2019 14:57:14Das Ergebnis lautet:wanne hat geschrieben:22.10.2019 14:25:03Nur weils mich interessiert: Kannst du mal ausprobieren ob die bash aus lenny das schon kann? AlsoCode: Alles auswählen
echo $'\u201E'
das geht da also noch nicht.Code: Alles auswählen
\u201E
3.2Welche Version der Bash ist das in Lenny
Code: Alles auswählen
LC_ALL="C" ./bash-static