Ersetzen Sie den Zeilenvorschub durch ein Zeichen

870
it_is_a_literature

Ich möchte \ n durch ein Zeichen ersetzen .

echo -n "s\n" |tr "\n" "a" s\n 

Warum kann ich keine sa als Ergebnis bekommen?

0

1 Antwort auf die Frage

2
Kamil Maciorowski

Von man echo:

-e ermöglicht die Interpretation von Backslash-Fluchten

Ihr Echo kann eine eingebaute Shell sein (try type echo). Wenn ja, verwenden Sie help echostatt man echo. Aber es sollte dasselbe über die -eOption sagen .

Ohne diese Option wird die \nZeichenfolge wörtlich gedruckt, nicht als Zeilenvorschub. Notice trerfordert keine spezielle Option, um wie erwartet zu arbeiten.

Fester Befehl:

echo -ne "s\n" | tr "\n" "a" 

Mitbenutzer Gordon Davisson wies auf einige Dinge hin. Sie scheinen wichtig genug, um sie in meine Antwort aufzunehmen, um später darauf zurückgreifen zu können. Von diesem Punkt geht alles an Gordon .

Verschiedene Versionen von echosind in Bezug auf Fluchtwege und Optionen sehr inkonsistent. Einige werden Escape-Sequenzen ohne interpretieren -e. Einige drucken "-e" als Teil ihrer Ausgabe. Einige tun… andere Dinge. Verwenden Sie für printfsolche Dinge stattdessen (wie in printf "s\n"). Weitere Informationen findenecho Sie in der POSIX-Spezifikation, insbesondere im Abschnitt "Anwendungsnutzung".

Verschiedene Versionen von `Echo` sind sehr inkonsistent hinsichtlich Flucht und Optionen. Einige interpretieren Escape-Sequenzen ohne "-e". Einige drucken "-e" als Teil ihrer Ausgabe. Einige tun ... andere Dinge. Verwenden Sie für solche Dinge stattdessen `printf` (wie in` printf "s \ n" `). Siehe die [POSIX-Spezifikation für "echo"] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html), insbesondere den Abschnitt "Anwendungsnutzung". Gordon Davisson vor 7 Jahren 1
@ GordonDavisson Vielen Dank. Ich habe Ihren Kommentar in meiner Antwort zitiert. Kamil Maciorowski vor 7 Jahren 0