Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: sort  (Przeczytany 1276 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
sort
« dnia: 2016-07-25, 17:27:00 »
plik
DoAsRoot 08-Jun-2013
abiword 24-Jan-2015
abiword 22-Jan-2015
abiword 24-Jan-2015
abiword 14-Jan-2015
abiword 23-Jan-2015
akonadi 21-Mar-2016
akonadi 21-Mar-2016
amarokw 18-Nov-2014
atticaw 08-Nov-2013
audexhd 12-Apr-2014
audiojd 19-May-2013

Odnosząc się do
Cytuj
Or, we can ignore the first three characters of the third field, and sort solely based on title, ignoring seniority:
sort -k 3.3 data.txt
01 Joe Sr.Designer
03 Albert Jr.Designer
02 Marie Jr.Developer
04 Dave Sr.Developer
http://www.computerhope.com/unix/usort.htm

Próbowałem posortować rok, czyli omijam 7 znaków 08-Jun- i sortuję 2016 ,
ale
$ sort -k2.7n d
abiword 14-Jan-2015
abiword 22-Jan-2015
abiword 23-Jan-2015
abiword 24-Jan-2015
abiword 24-Jan-2015
akonadi 21-Mar-2016
akonadi 21-Mar-2016
amarokw 18-Nov-2014
atticaw 08-Nov-2013
audexhd 12-Apr-2014
audiojd 19-May-2013
DoAsRoot 08-Jun-2013

jak dam tak ...  to działa
$ sort -k2.8n d
akonadi 21-Mar-2016
akonadi 21-Mar-2016
abiword 14-Jan-2015
abiword 22-Jan-2015
abiword 23-Jan-2015
abiword 24-Jan-2015
abiword 24-Jan-2015
amarokw 18-Nov-2014
audexhd 12-Apr-2014
atticaw 08-Nov-2013
audiojd 19-May-2013
DoAsRoot 08-Jun-2013

Czyżby liczyło od spacji ?
No to nawet gdyby liczylo od spacji, to -k2.7n powinno uciąć  "_21-Mar" i "-2016" równie dobrze posortować ?
Prawda ?


Kiedyś nie wiedząc oco chodzi poprostu  zamieniłem kreski na spacje i sformatowałem datę
awk -F " " '{ print $2 }' plik | sed -e 's/-/ /g' |  tr "a-z" "A-Z" | sed -e \
 's/ JAN / 01 /g'  -e 's/ FEB / 02 /g'  -e 's/ MAR / 03 /g'  -e 's/ APR / 04 /g' \
 -e 's/ MAY / 05 /g'   -e 's/ JUN / 06 /g'   -e 's/ JUL / 07 /g'   -e 's/ AUG / 08 /g'  \
 -e 's/ SEP / 09 /g'   -e 's/ OCT / 10 /g'   -e 's/ NOV / 11 /g'   -e 's/ DEC / 12 /g'  \
i posortowałem date opcją sort -k3n -k2n -k1n

... a można było
sort -k2.9,2.12n -k2.5,2.7 -k2.2,2.3 plik
Chociaz mam wątpliwości co do sortowania miesiąca
$ sort -k2.9,2.12n -k2.5,2.7M -k2.2,2.3 d
atticaw 08-Nov-2013
DoAsRoot 08-Jun-2013
...

$ cat d |  tr "A-Z" "a-z" | sort  -k2.5,2.7M 
abiword 14-jan-2015
abiword 22-jan-2015
abiword 23-jan-2015
abiword 24-jan-2015
abiword 24-jan-2015
amarokw 18-nov-2014
atticaw 08-nov-2013
audexhd 12-apr-2014
audiojd 19-may-2013
doasroot 08-jun-2013
akonadi 21-mar-2016
akonadi 21-mar-2016

$ cat d |  tr "A-Z" "a-z" | sort  -k2.4,2.6M --debug
sort: użycie reguł sortowania „pl_PL.UTF-8”
sort: początkowe odstępy są znaczące w kluczu 1, rozważ podanie „b”
abiword 14-jan-2015
          ^ brak dopasowania klucza
...

Edytowane:
Dobra ogarnełem czemu mi nie sortowało miesięcy, , po opcji "--debug" "sort: użycie reguł sortowania „pl_PL.UTF-8”  dało mi do myślenia
że potrafi tylko po polsku miesiace sortować i teraz po ustawieniu, działa.

$ LC_ALL=en_US.utf8 sort  -k2.5,2.7M d --debug
sort: failed to set locale; using simple byte comparison
sort: leading blanks are significant in key 1; consider also specifying 'b'
abiword 14-Jan-2015
           ___
___________________
abiword 22-Jan-2015
           ___
___________________
abiword 23-Jan-2015
           ___
___________________
abiword 24-Jan-2015
           ___
___________________
abiword 24-Jan-2015
           ___
___________________
akonadi 21-Mar-2016
           ___
___________________
akonadi 21-Mar-2016
           ___
___________________
audexhd 12-Apr-2014
           ___
___________________
audiojd 19-May-2013
           ___
___________________
DoAsRoot 08-Jun-2013
            ___
____________________
amarokw 18-Nov-2014
           ___
___________________
atticaw 08-Nov-2013
           ___
___________________

Czyli z kluczami i kropkami i przecinkami
$ LC_ALL=en_US.utf8 sort -k2.9,2.12n -k2.5,2.7M -k2.2,2.3 d
audiojd 19-May-2013
DoAsRoot 08-Jun-2013
atticaw 08-Nov-2013
audexhd 12-Apr-2014
amarokw 18-Nov-2014
abiword 14-Jan-2015
abiword 22-Jan-2015
abiword 23-Jan-2015
abiword 24-Jan-2015
abiword 24-Jan-2015
akonadi 21-Mar-2016
akonadi 21-Mar-2016
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.