2009-07-07 5 views
5


Ho un file che ha più colonne, spazi bianchi separati. es:Come ordinare il contenuto di un file sul posto da una colonna?

 
data1    data2   data3    data4 
val1    val2   val3     val4 

ho bisogno di ordinare i file in base ai valori in diverse colonne, cioè a volte in base al valore di colonna 1 volte in base al valore di col2 e così via.

Ho pensato al comando di ordinamento, ma non sono riuscito a capire come usarlo per realizzare questo.

Thanx,

+0

Così si vuole trovare il comando giusto Unix o da fare a livello di codice, per esempio C ? – anderstornvig

risposta

10

E 'facile se si dà in su l'ordinamento sul posto:

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

thanx ,,, era un'opzione -k .. un'altra cosa può funzionare con il separatore di colonne diverso dallo spazio .. – sud03r

+1

Sì, usa l'opzione -t. Dovresti controllare * man sort *. –

2

Sort è dotato di comprensione delle "chiavi", che è la parte della linea che viene utilizzato per fai il confronto. Per default, la chiave è l'intera linea, ma può essere modificata utilizzando l'opzione -k:

Esempio: Per ordinare sul secondo campo, utilizzare --key=2,2' ( -k 2,2').

Per impostazione predefinita, le chiavi sono separate dalla transizione tra caratteri non vuoti e caratteri vuoti.

0

Per ordinare il file sul posto, prova a vim-way:

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

usare alternativa -o parametro come sort -k1 in.txt -o out.txt

Problemi correlati