Wie ersetzt ich Neulinge durch Registerkartenzeichen?
Frage
Ich habe Muster wie unten
hi
hello
hallo
greetings
salutations
no more hello for you
Ich versuche, alle Newlines durch die Registerkarte mit dem folgenden Befehl zu ersetzen
sed -e "s_/\n_/\t_g"
Aber es funktioniert nicht.
Könnte jemand bitte helfen? Ich suche eine Lösung in SED/awk.
Lösung
Ich bin mir nicht sicher über die gewünschte Ausgabe, die Sie möchten
# awk -vRS="\n" -vORS="\t" '1' file
hi hello hallo greetings salutations no more hello for you
Andere Tipps
Hier tr
ist besser, denke ich:
tr "\n" "\t" < newlines
Wie Nifle in einem Kommentar vorgeschlagen hat, newlines
Hier ist der Name der Datei, die den Originaltext enthält.
Da sed
ist so zeilenorientiert, dass es in einem Fall wie diesem komplizierter ist.
sed '$!{:a;N;s/\n/\t/;ta}' file
Sie können Newlines nicht linienzeitig ersetzen durch sed
. Sie müssen Linien sammeln und die Neulinge ersetzen zwischen Sie.
text abc\n <- can't replace this one
text abc\ntext def\n <- you can replace the one after "abc" but not the one at the end
Dies sed
Das Skript akkumuliert alle Zeilen und eliminiert alle Neuheiten, aber die letzten:
sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'
Übrigens deine sed
Skript sed -e "s_/\n_/\t_g"
versucht zu sagen: "Ersetzen Sie alle Schrägstriche, gefolgt von Newlines mit Schrägstrichen, gefolgt von Registerkarten". Die Unterstriche übernehmen die Rolle von Grenzwerten für die s
Befehl, damit Schrägstriche einfacher als Zeichen zum Suchen und Ersetzen verwendet werden können.
paste -s
-s verkettet alle Zeilen jeder separaten Eingabedatei in Befehlszeilenreihenfolge. Das Newline -Zeichen jeder Zeile mit Ausnahme der letzten Zeile in jeder Eingabedatei wird durch das Registerkartenzeichen ersetzt, sofern von der Option -d nicht anders angegeben.
Sie sind fast mit Ihrem SED -Skript da, Sie müssten es nur ändern, an:
sed -e "s/\n/\t/g"
Das \
ist genug für die Flucht, Sie müssen nicht hinzufügen _
Und Sie müssen die hinzufügen /
Vor g
Am Ende zu lassen, dass SED weiß, dass dies der letzte Teil des Drehbuchs ist.