Question

Titre résume.

$ echo `seq 0 10` `seq 5 15` | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15

Pourquoi pas ce travail?

Même si je ne l'utilise seq:

echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15

Et même le creusement de fossés echo directement:

$ echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' > numbers
$ sort -n numbers 
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
Était-ce utile?

La solution

trie sort(1) lignes . Vous devez analyser les données des espaces délimités vous:

echo `seq 0 10` `seq 5 15` | tr " " "\n" | sort -n

Autres conseils

Parce que vous avez besoin pour les nouvelles lignes sort:

$ echo `seq 0 10` `seq 5 15` | tr " " "\\n" | sort -n | tr "\\n" " "; echo ""
0 1 2 3 4 5 5 6 6 7 7 8 8 9 9 10 10 11 12 13 14 15
$

Vous avez une seule ligne d'entrée. Il n'y a rien à trier.

La commande que vous avez saisi entraîne la séquence de nombres étant tous passé à sort en une ligne. Ce n'est pas ce que vous voulez. Il suffit de passer la sortie de seq directement à sort:

(seq 0 10; seq 5 15) | sort -n

Par ailleurs, comme vous venez de découvrir, la construction

echo `command`

ne pas habituellement faire ce que vous attendez et est redondant pour ce que vous attendez réellement: Il indique au shell pour capturer la sortie de command et le transmettre à echo, qu'elle produit en sortie à nouveau. Il suffit de laisser la sortie de la commande passer par directement (à moins que vous vraiment signifie qu'elle soit traitée par echo, peut-être de développer des séquences d'échappement, ou de s'effondrer tout à une ligne).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top