![Aufteilen von Zeilen aus einer TXT-Datei in Excel-Spalten in Bash](https://rvso.com/image/1070318/Aufteilen%20von%20Zeilen%20aus%20einer%20TXT-Datei%20in%20Excel-Spalten%20in%20Bash.png)
Ich habe eine Textdatei (lines.txt) wie diese:
ab.qq
1
2
3
cd.qq
3
4
5
ef.qq
7
8
9
Und ich versuche, von jeder vierten Zeile in eine andere Spalte in einer Excel-/CSV-Datei zu wechseln, im Wesentlichen das, was mit diesem Bash-Skript gedruckt wird:
#!/bin/bash
split -l 4 lines.txt outsq
paste -d ' ' outsq*
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
Ich wäre für Hilfe beim Schreiben in eine Excel-/CSV-Datei dankbar. Auch jede andere Möglichkeit, die zum Ergebnis führt (ohne Teilen/Einfügen), ist auf jeden Fall in Ordnung.
Antwort1
Der rs
(RtSDas ursprünglich von BSD stammende Dienstprogramm hape ist für derartige Dinge nützlich.
Zum Beispiel:
$ rs -e -t 4 0 < lines.txt
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
Wo
-e
besagt, dass jede Eingabezeile als Element behandelt werden soll-t
transponiert Spalten in Zeilen4 0
gibt 4 Zeilen und beliebig viele Spalten aus
Die Optionen -c
und -C
legen die Eingabe- bzw. Ausgabetrennzeichen fest. Für die CSV-Ausgabe können Sie also Folgendes verwenden:
$ rs -etC, 4 0 < lines.txt
ab.qq,cd.qq,ef.qq,
1,3,7,
2,4,8,
3,5,9,
rs
ist als gleichnamiges Paket im Ubuntu- universe
Repository verfügbar.
Alternativ könnten Sie in awk so etwas tun:
$ awk '
{a[NR%4] = a[NR%4] == "" ? $0 : a[NR%4] "," $0}
END {for(i=1;i<=4;i++) print a[i%4]}
' lines.txt
ab.qq,cd.qq,ef.qq
1,3,7
2,4,8
3,5,9