Comando di ordinamento Linux: come ordinare su un numero incorporato in un campo?


0

Sono su RHEL 6 usando BASH.

Sto cercando di ordinare alcune righe in un file, in base a un numero incorporato in un campo. Il nome del file è word.txt.

Questo è il comando che sto usando:

sort -n -k4 word.txt

Questo è l'output che sto ottenendo, non in ordine numerico:

INSERT INTO area_names VALUES(124,'NewYork');
INSERT INTO area_names VALUES(125,'NewYork');
INSERT INTO area_names VALUES(12,'NewYork');

Ovviamente, la linea con solo "12" dovrebbe essere la prima.

Il numero dopo "VALORI (" può essere di qualsiasi lunghezza

Come posso dire all'ordinamento di ordinare il numero tra "VALORI (" e ","?

Posso ricorrere a una soluzione alternativa di mettere uno spazio bianco dopo "VALORI (" nei dati, ma preferirei non farlo a meno che questa non sia l'opzione migliore.

Risposte:


2

Prova questo:

 sort -t "(" -k2,2 -n word.txt

Produzione

INSERT INTO area_names VALUES (12, 'NewYork');
INSERT INTO area_names VALUES (124, 'NewYork');
INSERT INTO area_names VALUES (125, 'NewYork');

-k POS1 [, POS2]

     Specificare un campo di ordinamento costituito dalla parte della linea tra
     POS1 e POS2 (o la fine della linea, se POS2 è omesso),
     _inclusive_.

     Ogni POS ha la forma "F [.C] [OPTS]", dove F è il numero di
     campo da usare e C è il numero del primo carattere del
     inizio del campo. I campi e le posizioni dei personaggi sono
     numerato a partire da 1; una posizione di carattere pari a zero in POS2
     indica l'ultimo carattere del campo. Se `.C 'viene omesso
     POS1, il suo valore predefinito è 1 (l'inizio del campo); se omesso
     da POS2, per impostazione predefinita è 0 (la fine del campo). OPTS sono
     opzioni di ordinazione, che consentono di ordinare le singole chiavi in ​​base a
     a regole diverse; vedi sotto per i dettagli. Le chiavi possono essere multiple
     campi.

     Esempio: per ordinare sul secondo campo, usa `--key = 2,2 '(` -k 2,2').

Funziona. Grazie. Cosa sta succedendo con ", 2" in -k2,2? La pagina MAN non dice molto al riguardo.
user787832

Ho aggiunto del testo da info sort.
Ciro,

Grazie, ho appena usato la manpage e "info" non mi è
venuto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.