2011-06-09 29 views
26

Estoy buscando la forma más fácil de resolver este problema. Tengo un gran conjunto de datos que no puedo cargar en Excel de este tipo de formatoOrdenar con herramientas de Unix y varias columnas

This is a sentence|10 
This is another sentence|5 
This is the last sentence|20 

Lo que quiero hacer es resolver esto de menor a mayor en función del número.

cat MyDataSet.txt | tr "|" "\t" | ??? 

No está seguro de cuál es la mejor forma de hacerlo es hacer esto, yo estaba pensando en usar awk para cambiar las columnas y el hacer una especie, pero que estaba teniendo problemas para hacerlo.

Ayúdame por favor

+0

Sí, puede importar este tipo de datos a Excel, si los importa como texto, especifique "|" como el delimitador –

Respuesta

35
sort -t\| -k +2n dataset.txt 

debe hacerlo. separador de campo y selección clave alternativa

+2

¿Cuál es el propósito de '+' en '+ 2'? – brandizzi

+1

Para mover el género desde el enfoque en el primer grupo delimitado al segundo grupo delimitado. – zellio

+4

@brandizzi: Hábito. Las versiones anteriores de tipo usaban + y - para indicar qué columnas ordenar y qué no ordenar. El género GNU usa una técnica diferente que no lo requiere (pero tampoco lo hace en +) –

7

has necesitado tipo -n

$ sort -n inputFile 
This is another sentence|5 
This is a sentence|10 
This is the last sentence|20 

usted podría cambiar las columnas con awk demasiado

$ awk -F"|" '{print $2"|"$1}' inputFile 
10|This is a sentence 
5|This is another sentence 
20|This is the last sentence 

combinando awk y ordenar:

por comentarios

si tiene una disminución en la frase

$ sort -n -t"|" -k2 inputFile 
This is another sentence|5 
This is a sentence|10 
This is the last sentence|20 
this is a sentence with a number in it 2|22 

y por supuesto puede redirigir a un nuevo archivo:

$ awk -F"|" '{print $2"|"$1}' inputFile | sort -n > outFile 
+0

esto solo funcionará si no hay números en la oración. – zellio

+0

cierto, me estaba yendo del ejemplo que había copiado. – matchew

2

Ordenar por número, cambiar el separador y agarrar el segundo grupo usando ordenar.

sort -n -t'|' -k2 dataset.txt 
3

probar este comando para ordenar:

sort -n -t '|' -k2 file.txt 
13

Por lo general, no es necesario gato para enviar el archivo a un filtro. Dicho esto, puede usar el filtro de clasificación .

sort -t "|" -k 2 -n MyDataSet.txt 

Esto ordena el archivo MyDataSet.txt utilizando el | carácter como separador de campo y ordenando numéricamente según el segundo campo (el número).