Pregunta

título lo resume todo.

$ 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

¿Por qué no funciona?

Incluso si yo no uso 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

E incluso abandonando echo directamente:

$ 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
¿Fue útil?

Solución

tipo sort(1) líneas . Usted tiene que analizar los datos delimitados los espacios en blanco a sí mismo:

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

Otros consejos

Debido a que necesita nuevas líneas para 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
$

Usted tiene una sola línea de entrada. No hay nada que resolver.

El comando como las ha escrito resulta en la secuencia de números siendo todos pasaron a sort en una línea. Eso no es lo que desea. Sólo tiene que pasar la salida de seq directamente a sort:

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

Por cierto, como se acaba de descubrir, la construcción

echo `command`

no general hace lo que espera y es redundante para lo que esperas: Cuenta la cáscara para capturar la salida de command y pasarlo a echo, que la produce como salida de nuevo. Simplemente deja que la salida del comando de ir a través de forma directa (a menos que realmente significa que esta sea tratada por echo, tal vez para ampliar las secuencias de escape, o para colapsar todo a una sola línea).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top