J'ai deux variables qui contiennent des informations sur plusieurs lignes et je veux les colonnes.
varA
Retour
Aug 01
Aug 04
Aug 16
Aug 26
et varB
retourne
04:25
07:28
03:39
10:06
si j'imprime les deux variables, il retourne
Aug01
Aug04
Aug16
Aug26
04:25
07:28
03:39
10:06
Ce que je veux faire est le suivant:
Aug01 04:25
Aug04 07:28
Aug16 03:39
Aug26 10:06
Je suis novice dans l'utilisation de Linux et j'apprécierais quelques conseils.
command-line
bash
text-processing
BNairb
la source
la source
Réponses:
Meet
paste
, qui fait partie des utilitaires GNU core préinstallés :paste
prend des fichiers et non des variables en entrée, j'ai donc utilisébash
la substitution de processus et j'ai simplement imprimé le contenu des variables avecprintf
. Le délimiteur par défaut entre les colonnes estTAB
, vous pouvez le changer avec l'-d
option, par exemplepaste -d" "
pour un seul caractère d'espace. Pour en savoir plus,paste
consultez le manuel en ligne ou lancezinfo '(coreutils) paste invocation'
.la source
Si vous voulez simplement afficher les variables de texte côte à côte, @dessert a la solution la plus simple (la meilleure?) À utiliser
print
. Cependant, si vous souhaitez pouvoir manipuler chaque pièce individuellement, vous pouvez facilement convertir les vars en tableaux à la place et les parcourir.la source
Vous pouvez le faire avec l'outil POSIX
pr
:Résultat:
Ou pour un seul onglet:
Ou pour un espace unique:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pr.html
Ou avec
column
duutil-linux
package:la source
Si vous vouliez éviter les utilitaires externes et le faire de manière native dans le shell, vous pouvez utiliser
read
avec des descripteurs de fichiers / chaînes ici pour chaque variable:Bien qu'il soit souvent considéré comme une mauvaise pratique d'utiliser le shell pour le traitement de texte, il peut être excusé dans le cas où vous avez déjà les données dans des variables de shell.
la source