Ersetzen Sie die Zeile Futtermittel mit einem Platz in der unix-shell-Skript
Ich habe eine text-Datei mit einigen Datensätzen. Jeder Datensatz ist aufgeteilt in 4 Reihen (nicht immer 4), wie im Beispiel:
----
row1
row2
row3
row4
----
row1
etc...
Jede Zeile endete mit dem Line-Feed-Zeichen (LF).
Ok, ich brauche, um den Bericht in nur einer Zeile, und ersetzen Sie den LF-Zeichen durch ein Leerzeichen, wie im Beispiel:
---- row1 row2 row3 row4
---- row1 row2 ...etcetera
Jede Hilfe oder Anregung für die Lösung?
Vielen Dank im Voraus.
InformationsquelleAutor Possa | 2011-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
vielleicht kann das funktionieren ?
InformationsquelleAutor ajreal
oder all-in-one awk
InformationsquelleAutor kurumi
Und eine viel einfachere Ansatz wäre dieser
InformationsquelleAutor fancyPants
Müssen Sie wissen, was genau ist das Trennzeichen zwischen den Datensätzen. In deinem Beispiel sieht es aus wie es ist '----', aber Sie sagte auch, dass es eine variable Anzahl von Datensätzen.
Sowieso, Dinge wie, die sind am besten mit code wie diesem:
InformationsquelleAutor Pawel Veselov
awk 'BEGIN {RS="----"; FS="\n"; OFS=" "} FNR==1 {next} {$1=RS $1; print}' input.file
InformationsquelleAutor glenn jackman
Verwenden awk für diese eher als ein shell-Skript
Durchlaufen eine text-Datei und verschiedene Dinge zu tun basierend auf dem Inhalt, ist genau das, was awk entworfen wurde, zu tun.
In the 21st century-shell-Skripte sollten einfach gehalten werden und andere Werkzeuge verwendet, für komplexe Logik.
im Gegenteil, awk ist viel einfacher zu benutzen als die sed.
Ich denke nicht so. Was wäre die Lösung mit awk? Dann überlegen Sie, wie viel Sie brauchen, um zu Lesen und erfahren Sie mehr über awk, vorausgesetzt, dass Sie nicht wissen, etwas über awk und vergleichen derselben mit der sed. sed gewinnt diese bei weitem.
es gibt viele andere Dinge
sed
nicht so einfach wie awk. erwägen Sie, die Mathe -, Analyse-Felder in eine csv-Datei, table-lookups, etc. Lernen awk ist mehr als nützlich, lernen sed.Das könnte gut sein, ich bin nicht so vertraut mit awk. Aber es ist dieses speziellen Problems hier. Und sicherlich ist dies gelöst, mit sed und tr, siehe meine Antwort) schneller als mit awk (wieder überlegen, wie viel Sie noch zu lernen).
InformationsquelleAutor Michael Dillon