Combiner la sortie de deux commandes dans le système unix
J'ai besoin de combiner la sortie de deux commandes.
Par exemple:
Si je saisie ls -l && file *
qu'il va me donner
-rw-rw-r-- 1 user user 1356 2012-01-21 07:45 string.c
-rwxrwxr-x 1 user user 7298 2012-01-21 07:32 string_out
-rw-rw-r-- 1 user user 777 2012-01-18 21:44 test
string.c: ASCII C program text, with CRLF line terminators
string_out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
test: POSIX shell script text executable
mais ce que je veux est:
-rw-rw-r-- 1 user user 1356 2012-01-21 07:45 string.c string.c: ASCII C program text, with CRLF line terminators
-rwxrwxr-x 1 user user 7298 2012-01-21 07:32 string_out string_out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
-rw-rw-r-- 1 user user 777 2012-01-18 21:44 test test: POSIX shell script text executable
Des suggestions à faire?
source d'informationauteur ton1c
Vous devez vous connecter pour publier un commentaire.
coller
est votre ami ici. À l'aide de bash processus de substitution:edit: ajout de la commande sed pour supprimer la première ligne de ls de sortie ("total: xx")
Vous pouvez utiliser le
join
de commande, mais il peut être difficile de tout faire en une seule ligne de commande. Si vous créez deux fichiers avec la sortie de chaque commande, c'est assez simple. Vous devrez peut-être massage de la sortie un peu (comme la suppression de la fuite:
dans la sortie defile
).Vous avez besoin d'une boucle
Dans mon Cygwin, il n'y a pas de
file
de commande. Donc je l'ai fait avecwc
. Leur format de sortie est presque la même.À l'aide de
awk
:À l'aide de
while
boucle (Similaire à @Shiplu et @Kyle réponse, mais à l'aide dewhile loop
avecfield descriptors
: