GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ändern Sie die Reihenfolge der Zeilen in einer Datei

$ seq 9 | sed -n 'p;n;h;n;G;p'
1
3
2
4
6
5
7
9
8

Das heißt, p gibt die aktuelle Zeile aus, erhält den n ext eins, h alt, nimm den n ext eins, G Setzen Sie die gehaltene Zeile (hängen Sie sie an den Musterbereich an) und p Geben Sie diesen 2-zeiligen Musterraum mit vertauschter dritter und zweiter Zeile aus.


Mit awk und ganzzahlige Mathematik:

awk 'NR%3 == 1 { print } NR%3 == 2 { delay=$0 } NR%3 == 0 { print; print delay; delay=""} END { if(length(delay) != 0 ) { print delay } }' /path/to/input

Der Modulo-Operator führt eine ganzzahlige Division durch und gibt den Rest zurück, also gibt er für jede Zeile die Sequenz 1, 2, 0, 1, 2, 0 [...] zurück. Wenn wir das wissen, speichern wir einfach die Eingabe in Zeilen, in denen der Modulus 2 ist, für später – nämlich direkt nach dem Drucken der Eingabe, wenn sie null ist.


Noch ein awk Ansatz:

awk '{print $0; if ((getline L2)>0 && (getline L3)>0){ print L3 ORS L2 }}' file

Die Ausgabe:

gi_1234
I have a cat.
My cat is blue.
gi_5678
I also have a dog.
My dog is orange.
  • (getline L2)>0 && (getline L3)>0 - extrahiert die nächsten 2 Aufzeichnungen, falls vorhanden

  • jeder 2. und 3. Datensatz wird L2 zugeordnet und L3 Variablen bzw.


Linux
  1. Die Bash‘?

  2. Dateiinhalt ohne die erste und letzte Zeile drucken?

  3. Zeilen in einer Datei zählen?

  4. Wie ändere ich die Berechtigung für eine einzelne Datei?

  5. Ändern Sie die Berechtigungen einer Datei

So ändern Sie das memory_limit in der .htaccess-Datei

So drucken Sie doppelte Zeilen in einer Textdatei unter Linux

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Setzen/Ändern des ctime- oder Change time-Attributs einer Datei

So ändern Sie die Konfiguration von u-boot in Yocto

So ändern Sie die Standardeinstellungen für Drucken in Datei...