根据排序请求创建一个文件



我有一个超过 100000 条记录的列表。

每个示例,从 21 到 84 的值是连续的,那么它将是 21-84,但如果它不像 84 87 的情况那样连续,那么它需要用 84,87 分隔, 每行的开头将是值 11111。

列表中的值最终将在 21 到 80 的列范围内。

每行的长度最大为 80。

这是输入文件。

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
87
85
86
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
108
111
109
112
110
113
115
114
117
116
118
124
125
120
122
123
126
132
127
133
128
130
131
135
136
137
138
139
140
141
142
143
144
145
146
148
147
149
150
151
152
153
154
155
156
158
157
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
184
183
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
214

此处在所需的输出文件中。

111111              21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
111111              116,118,124-125,120,122-123,126,132,127,133,128,130-131,
111111              135-146,148,147,149-156,158,157,159-182,184,183,185-212,214,

提前致谢

不加解释地呈现:检查手册页中所使用的命令,并返回问题:

awk '
function printrange() { print start (start == last ? "" : "-" last) }
NR == 1 {start=last=$1; next} 
$1 == last+1 {last=$1; next} 
{printrange(); start=last=$1}
END {printrange()}
' file | paste -sd" " | fold -sw 60 | tr ' ' ',' | sed 's/^/111111              /'
111111              21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
111111              116,118,124-125,120,122-123,126,132,127,133,128,130-131,
111111              135-146,148,147,149-156,158,157,159-182,184,183,185-212,214

相关内容

最新更新