61
Bash, skrypty powłoki / sort
« dnia: 2016-07-25, 17:27:00 »
plik
Odnosząc się do
Próbowałem posortować rok, czyli omijam 7 znaków 08-Jun- i sortuję 2016 ,
ale
jak dam tak ... to działa
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ę
i posortowałem date opcją sort -k3n -k2n -k1n
... a można było
Chociaz mam wątpliwości co do sortowania miesiąca
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.
Czyli z kluczami i kropkami i przecinkami
Kod: [Zaznacz]
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:http://www.computerhope.com/unix/usort.htmKod: [Zaznacz]01 Joe Sr.Designersort -k 3.3 data.txt
03 Albert Jr.Designer
02 Marie Jr.Developer
04 Dave Sr.Developer
Próbowałem posortować rok, czyli omijam 7 znaków 08-Jun- i sortuję 2016 ,
ale
Kod: [Zaznacz]
$ 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
Kod: [Zaznacz]
$ 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ę
Kod: [Zaznacz]
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' \
... a można było
Kod: [Zaznacz]
sort -k2.9,2.12n -k2.5,2.7 -k2.2,2.3 plik
Kod: [Zaznacz]
$ sort -k2.9,2.12n -k2.5,2.7M -k2.2,2.3 d
atticaw 08-Nov-2013
DoAsRoot 08-Jun-2013
...
Kod: [Zaznacz]
$ 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
Kod: [Zaznacz]
$ 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.
Kod: [Zaznacz]
$ 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
Kod: [Zaznacz]
$ 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