2009-07-07 19 views
5


Tengo un archivo que tiene varias columnas, espacios en blanco separados. por ejemplo:¿Cómo ordenar el contenido de un archivo en el lugar por una columna?

 
data1    data2   data3    data4 
val1    val2   val3     val4 

necesito para ordenar el archivo de la base de valores en diferentes columnas, es decir en algún momento basado en el valor de la columna 1 en algún momento basado en el valor de col2 y así sucesivamente.

Pensé en ordenar el comando pero no pude encontrar la manera de usarlo para lograrlo.

Gracias,

+0

Así que usted quiere encontrar el comando adecuado Unix o para hacerlo mediante programación en, digamos C ? – anderstornvig

Respuesta

10

Es fácil si usted da para arriba en la clasificación en su lugar:

sort -k 1 original > by_col_1 
sort -k 2 original > by_col_2 
+0

thanx ,,, era la opción -k ... una cosa más puede funcionar con un separador de columnas que no sea espacio ... – sud03r

+1

Sí, use la opción -t. Deberías echar un vistazo a * man sort *. –

2

Ordenar ha incorporado en la comprensión de "claves", que es la parte de la línea que se utiliza para hacer la comparación Por defecto, la clave es la línea entera, pero esto se puede cambiar usando la opción -k:

Ejemplo: Para ordenar en el segundo campo, utilice --key=2,2' ( -k 2,2').

De manera predeterminada, las teclas están separadas por la transición entre caracteres en blanco y no en blanco.

0

Para ordenar el archivo en el lugar, tratar vim vías:

$ ex -s +'%!sort -k1' -cxa file.txt 

Como alternativa, utilice -o parámetro como sort -k1 in.txt -o out.txt

Cuestiones relacionadas