Ich habe zwei Variablen, die mehrzeilige Informationen enthalten, und ich möchte sie spalten.
varA
kehrt zurück
Aug 01
Aug 04
Aug 16
Aug 26
und varB
kehrt zurück
04:25
07:28
03:39
10:06
Wenn ich beide Variablen drucke, gibt es zurück
Aug01
Aug04
Aug16
Aug26
04:25
07:28
03:39
10:06
Was ich tun möchte, ist Folgendes:
Aug01 04:25
Aug04 07:28
Aug16 03:39
Aug26 10:06
Ich bin neu in Linux und würde mich über Ratschläge freuen, danke.
command-line
bash
text-processing
BNairb
quelle
quelle
Antworten:
Treffen Sie
paste
, Teil der vorinstallierten GNU-Kerndienstprogramme :paste
Nimmt Dateien und keine Variablen als Eingabe, also habe ichbash
Process Substitution verwendet und nur den Variableninhalt mit gedrucktprintf
. Das Standardtrennzeichen zwischen Spalten istTAB
, dass Sie dies mit der-d
Option ändern können , z. B.paste -d" "
für ein einzelnes Leerzeichen. Weiterepaste
Informationen finden Sie im Online-Handbuch oder unter Ausführeninfo '(coreutils) paste invocation'
.quelle
Wenn Sie nur die Textvariablen nebeneinander anzeigen möchten, bietet @dessert die einfachste (beste?) Lösung
print
. Wenn Sie jedoch in der Lage sein möchten, jedes Stück einzeln zu manipulieren, können Sie die Vars stattdessen einfach in Arrays konvertieren und diese durchlaufen.quelle
Wenn Sie externe Dienstprogramme vermeiden und dies nativ in der Shell tun möchten, können Sie
read
für jede Variable separate Dateideskriptoren / here-Zeichenfolgen verwenden:Obwohl es oft als schlechte Praxis angesehen wird, die Shell für die Textverarbeitung zu verwenden, kann dies für den Fall entschuldigt werden, dass Sie die Daten bereits in Shell-Variablen haben.
quelle
Sie können dies mit dem POSIX-Tool tun
pr
:Ergebnis:
Oder für eine einzelne Registerkarte:
Oder für einen einzelnen Raum:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pr.html
Oder mit
column
aus demutil-linux
Paket:quelle