GNU/Linux >> Znalost Linux >  >> Ubuntu

Nalezení řádků s nejnižší hodnotou ve třetím sloupci vzhledem k výsledkům Grepu?

Mám soubor, který se skládá z řádků, jako je tento (včetně dalších čísel). Toto je část výstupu

$ grep 1848 filename.csv

Jak najdu prvních 5 řádků, které mají nejnižší třetí sloupec v .csv za předpokladu, že 1848 je buď v prvním nebo druhém sloupci?

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

Bohužel 1848 se někdy objevuje i ve třetím sloupci a musím to ignorovat:

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

Přijatá odpověď:

S GNU řazením:

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

(Pokud může mít první sloupec méně nebo více než přesně 4 číslice, nahraďte {4} pomocí + )

Výstup:

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

Ubuntu
  1. Práce s rourami na příkazovém řádku Linuxu

  2. Jak Grep linky, které nezačínají "#" nebo ";"?

  3. Jak spočítat počet řádků v souboru po zápase Grep?

  1. Mohu aktualizovat systém pomocí Live CD?

  2. pomocí awk s podmínkami hodnoty sloupce

  3. Grep řádky začínající 1, ale ne 10, 11, 100 atd

  1. Grep – Proč závorky ve vzoru Grep odstraňují proces Grep z výsledků PS?

  2. Tisknout řádky, pokud daný sloupec začíná velkým písmenem?

  3. Tisk názvu souboru spolu s Grep výsledky v Find -exec?