
次の例では、テキストファイルを日付で正しく並べ替えるにはどうすればよいですか?問題は、これが実際には機能しないこと、フォームの長さが固定されていないため、sort -k1,1
ドット表記法を使用できないことです。sort -k1.6,1.9 -k1.4,1.4 -k1.1,1.2
私はこの恐ろしいことを考えました。
awk '{split($1,a,".");print a[1],a[2],a[3],$2}' test.txt | sort -k3,3 -k2,2 -k1,1 | awk '{print $1 "." $2 "." $3,$4}'
働いている間、私はその複雑さが好きではありません。これを単純化でき、ただ使用する方が良いですかsort
?
25.3.2020 26698
24.3.2020 22600
23.3.2020 19624
22.3.2020 17377
21.3.2020 15584
20.3.2020 13704
4.3.2020 407
3.3.2020 340
2.3.2020 262
1.3.2020 211
29.2.2020 200
28.2.2020 193
27.2.2020 170
26.2.2020 135
11.2.2020 74
10.2.2020 72
9.2.2020 64
8.2.2020 62
7.2.2020 62
6.2.2020 56
5.2.2020 53
2.2.2020 43
1.2.2020 38
31.1.2020 37
30.1.2020 34
28.1.2020 28
27.1.2020 20
答え1
努力する:
sort -n -t. -k3,3 -k2,2 -k1,1 test.txt
-n
数値順に並べ替え-t .
フィールド区切り記号でドット文字を使用する