-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathsort.sh
More file actions
164 lines (82 loc) · 2.67 KB
/
Copy pathsort.sh
File metadata and controls
164 lines (82 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
## Default sort and Collating order
cat greeting.txt
<greeting.txt tr ' ' '\n' | sort
printf '(banana)\n{cherry}\n[apple]' | sort
<greeting.txt tr ' ' '\n' | LC_ALL=C sort
printf '(banana)\n{cherry}\n[apple]' | LC_ALL=C sort
## Ignoring headers
cat scores.csv
( sed -u '1q' ; sort ) <scores.csv
## Dictionary sort
printf '(banana)\n{cherry}\n[apple]' | LC_ALL=C sort -d
## Reversed order
printf 'peace\nrest\nquiet' | sort -r
## Numeric sort
printf '20\n2\n3\n111\n314' | sort
printf '20\n2\n3\n111\n314' | sort -n
cat mixed_numbers.txt
sort -n mixed_numbers.txt
cat e_notation.txt
sort -g e_notation.txt
printf '2 pins\n13 pens\n2 balls' | sort -n
printf 'z\na2p\n13p\n2b\n-1\n 10' | sort -n
## Human numeric sort
cat file_size.txt
sort -hr file_size.txt
## Version sort
printf '1.10\n1.2' | sort -n
printf '1.10\n1.2' | sort -V
cat versions.txt
sort -V versions.txt
cat timings.txt
sort -V timings.txt
## Random sort
sort -R mixed_numbers.txt
## Unique sort
printf '(10)\n[20]\n[10]' | sort -du
cat purchases.txt
sort -u purchases.txt
printf '2 balls\n13 pens\n2 pins\n13 pens\n' | sort -nu
printf '2 balls\n13 pens\n2 pins\n13 pens\n' | sort -r -nu
printf '2 balls\n13 pens\n2 pins\n13 pens\n' | sort -n | uniq
printf 'mat\nbat\nMAT\ncar\nbat\n' | sort -u
printf 'mat\nbat\nMAT\ncar\nbat\n' | sort -fu
## Column sort
cat shopping.txt
sort -k2,2n shopping.txt
cat marks.csv
sort -t, -k2,2 marks.csv
sort -t, -k2,2 -k3,3nr marks.csv
printf 'Aug-20\nMay-5\nAug-3' | sort -t- -k1,1M -k2,2n
sort -t, -s -k2,2 marks.csv
sort -t, -u -k2,2 marks.csv
## Character positions within columns
printf 'car,(20)\njeep,[10]\ntruck,(5)\nbus,[3]' | sort -t, -k2.2,2n
printf 'car,(20)\njeep,[10]\ntruck,(5)\nbus,[3]' | sort -t, -k2.1,2.1
printf 'car (20)\njeep [10]\ntruck (5)\nbus [3]' | sort -k2.2,2n
printf 'car (20)\njeep [10]\ntruck (5)\nbus [3]' | sort -k2.2b,2n
## Debugging
printf 'car (20)\njeep [10]\ntruck (5)\nbus [3]' | sort -k2.2,2n --debug
printf 'car (20)\njeep [10]\ntruck (5)\nbus [3]' | sort -k2.2b,2n --debug
## Check if sorted
cat shopping.txt
sort -c shopping.txt
echo $?
sort -C shopping.txt
echo $?
## Specifying output file
sort -R nums.txt -o rand_nums.txt
cat rand_nums.txt
## Merge sort
shuf -n1000000 -i1-999999999999 > n1.txt
shuf -n1000000 -i1-999999999999 > n2.txt
sort -n n1.txt > n1_sorted.txt
sort -n n2.txt > n2_sorted.txt
time sort -n n1.txt n2.txt > op1.txt
time sort -mn n1_sorted.txt <(sort -n n2.txt) > op2.txt
time sort -mn n1_sorted.txt n2_sorted.txt > op3.txt
diff -sq op1.txt op2.txt
diff -sq op1.txt op3.txt
rm n{1,2}{,_sorted}.txt op{1..3}.txt
## NUL separator
printf 'cherry\0apple\0banana' | sort -z | cat -v