GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Trovare le linee con il valore più basso nella loro terza colonna dati i risultati Grep?

Ho un file composto da righe come questa (inclusi altri numeri). Questo fa parte dell'output di

$ grep 1848 filename.csv

Come posso trovare le prime 5 righe che hanno la terza colonna più bassa nel .csv file dato che 1848 è nella prima o nella seconda colonna?

1848,2598,11.310694021273559
1848,2599,10.947275955606203
1848,2600,10.635270124233982
1848,2601,11.916564552040725
1848,2602,12.119810736845844
1848,2603,12.406661156256154
1848,2604,10.636275056472996
1848,2605,12.549890992708612
1848,2606,9.783802450936204
1848,2607,11.253697489670264
1848,2608,12.16385432290674
1848,2609,10.30355814063016
1848,2610,12.102525596913923
1848,2611,11.636595992818505
1848,2612,10.741178028606866
1848,2613,11.352414275107423
1848,2614,12.204860161717253
1848,2615,12.959915468475387
1848,2616,11.320652192610872

Sfortunatamente 1848 a volte appare anche nella terza colonna e devo ignorarlo:

6687,8963,9.241848677632822
6687,9111,10.537325656184889
6687,9506,11.315629894841848

Risposta accettata:

Con ordinamento GNU:

grep -E '(^1848|^[0-9]{4},1848)' file | sort -t, -k3n | head -n 5

(se la prima colonna può contenere meno o più di 4 cifre esatte, sostituire {4} con + )

Uscita:

1848,2606,9.783802450936204
1848,2609,10.30355814063016
1848,2600,10.635270124233982
1848,2604,10.636275056472996
1848,2612,10.741178028606866

Ubuntu
  1. Lavorare con le pipe sulla riga di comando di Linux

  2. Come Grep Lines che non iniziano con "#" o ";"?

  3. Come contare il numero di righe in un file dopo una corrispondenza Grep?

  4. Posso aggiornare il sistema con un CD live?

  5. Linux:grep da determinate righe alla fine del file

Utilizzo del comando GREP in Linux con esempi

Il tutorial sul comando Grep con esempi per principianti

Il tutorial sui comandi Uniq con esempi per principianti

Manipolazione del testo dalla riga di comando con grep

usando awk con le condizioni del valore della colonna

Linee grep che iniziano con 1, ma non 10, 11, 100 ecc