انجمنهای فارسی اوبونتو
کمک و پشتیبانی => نرمافزارهای فنی-مهندسی => نویسنده: oostaa در 18 اسفند 1394، 11:47 بظ
-
سلام دوستان عزیز.
من یه فایل تکست دارم که 5 تا ستون داره در چندین هزار سطر.
چطور به وسیله ی پایتون 3 میتونم از بین اون سطرهایی که ردیف سوم و چهارمشون یکیه، فقط سطری رو نگه دارم که ردیف پنجمش از همه بزرگتره؟
نمونه ی فایل هم به صورت زیره :
511972 1 179.52 278.08 278.08
511973 1 183.04 278.08 278.08
511974 1 186.56 278.08 278.08
511975 1 190.08 278.08 278.08
511976 1 193.6 278.08 278.08
511977 1 197.12 278.08 278.08
511978 1 200.64 278.08 278.08
511979 1 204.16 278.08 278.08
511980 1 207.68 278.08 278.08
511981 1 211.2 278.08 278.08
511982 1 214.72 278.08 278.08
511983 1 218.24 278.08 278.08
511984 1 221.76 278.08 278.08
511985 1 225.28 278.08 278.08
511986 1 228.8 278.08 278.08
511987 1 232.32 278.08 278.08
511988 1 235.84 278.08 278.08
511989 1 239.36 278.08 278.08
511990 1 242.88 278.08 278.08
511991 1 246.4 278.08 278.08
511992 1 249.92 278.08 278.08
511993 1 253.44 278.08 278.08
511994 1 256.96 278.08 278.08
511995 1 260.48 278.08 278.08
511996 1 264 278.08 278.08
511997 1 267.52 278.08 278.08
511998 1 271.04 278.08 278.08
511999 1 274.56 278.08 278.08
512000 1 278.08 278.08 278.08
ITEM: TIMESTEP
20 2e+06
ITEM: NUMBER OF ATOMS
512000
ITEM: BOX BOUNDS
0 281.6
0 281.6
0 281.6
ITEM: ATOMS id type x y z
1 2 0 0 0
2 2 3.52 0 0
3 2 7.04 0 0
4 2 10.56 0 0
5 2 14.08 0 0
6 2 17.6 0 0
7 2 21.12 0 0
8 2 24.64 0 0
9 2 28.16 0 0
10 2 31.68 0 0
11 2 35.2 0 0
12 2 38.72 0 0
13 2 42.24 0 0
14 2 45.76 0 0
15 2 49.28 0 0
16 2 52.8 0 0
17 2 56.32 0 0
18 2 59.84 0 0
19 2 63.36 0 0
20 2 66.88 0 0
21 2 70.4 0 0
22 2 73.92 0 0
23 2 77.44 0 0
24 2 80.96 0 0
25 2 84.48 0 0
26 2 88 0 0
27 2 91.52 0 0
28 2 95.04 0 0
29 2 98.56 0 0
30 2 102.08 0 0
31 2 105.6 0 0
32 2 109.12 0 0
33 2 112.64 0 0
34 2 116.16 0 0
35 2 119.68 0 0
36 2 123.2 0 0
37 2 126.72 0 0
38 2 130.24 0 0
39 2 133.76 0 0
40 2 137.28 0 0
41 2 140.8 0 0
42 2 144.32 0 0
43 2 147.84 0 0
44 2 151.36 0 0
45 2 154.88 0 0
46 2 158.4 0 0
47 2 161.92 0 0
48 2 165.44 0 0
49 2 168.96 0 0
50 2 172.48 0 0
51 2 176 0 0
52 2 179.52 0 0
53 2 183.04 0 0
54 2 186.56 0 0
55 2 190.08 0 0
56 2 193.6 0 0
57 2 197.12 0 0
58 2 200.64 0 0
59 2 204.16 0 0
60 2 207.68 0 0
61 2 211.2 0 0
62 2 214.72 0 0
63 2 218.24 0 0
64 2 221.76 0 0
65 2 225.28 0 0
66 2 228.8 0 0
67 2 232.32 0 0
68 2 235.84 0 0
69 2 239.36 0 0
70 2 242.88 0 0
71 2 246.4 0 0
72 2 249.92 0 0
73 2 253.44 0 0
74 2 256.96 0 0
75 2 260.48 0 0
76 2 264 0 0
77 2 267.52 0 0
78 2 271.04 0 0
79 2 274.56 0 0
80 2 278.08 0 0
81 2 0 3.52 0
82 2 3.52 3.52 0
83 2 7.04 3.52 0
84 2 10.56 3.52 0
85 2 14.08 3.52 0
86 2 17.6 3.52 0
87 2 21.12 3.52 0
88 2 24.64 3.52 0
89 2 28.16 3.52 0
90 2 31.68 3.52 0
91 2 35.2 3.52 0
92 2 38.72 3.52 0
93 2 42.24 3.52 0
94 2 45.76 3.52 0
95 2 49.28 3.52 0
96 2 52.8 3.52 0
97 2 56.32 3.52 0
98 2 59.84 3.52 0
99 2 63.36 3.52 0
100 2 66.88 3.52 0
101 2 70.4 3.52 0
102 2 73.92 3.52 0
103 2 77.44 3.52 0
104 2 80.96 3.52 0
105 2 84.48 3.52 0
106 2 88 3.52 0
107 2 91.52 3.52 0
108 2 95.04 3.52 0
109 2 98.56 3.52 0
110 2 102.08 3.52 0
111 2 105.6 3.52 0
112 2 109.12 3.52 0
113 2 112.64 3.52 0
114 2 116.16 3.52 0
115 2 119.68 3.52 0
116 2 123.2 3.52 0
117 2 126.72 3.52 0
118 2 130.24 3.52 0
119 2 133.76 3.52 0
120 2 137.28 3.52 0
121 2 140.8 3.52 0
122 2 144.32 3.52 0
123 2 147.84 3.52 0
124 2 151.36 3.52 0
125 2 154.88 3.52 0
126 2 158.4 3.52 0
127 2 161.92 3.52 0
128 2 165.44 3.52 0
129 2 168.96 3.52 0
130 2 172.48 3.52 0
131 2 176 3.52 0
132 2 179.52 3.52 0
133 2 183.04 3.52 0
134 2 186.56 3.52 0
135 2 190.08 3.52 0
136 2 193.6 3.52 0
137 2 197.12 3.52 0
138 2 200.64 3.52 0
139 2 204.16 3.52 0
140 2 207.68 3.52 0
141 2 211.2 3.52 0
142 2 214.72 3.52 0
143 2 218.24 3.52 0
144 2 221.76 3.52 0
145 2 225.28 3.52 0
146 2 228.8 3.52 0
147 2 232.32 3.52 0
148 2 235.84 3.52 0
149 2 239.36 3.52 0
150 2 242.88 3.52 0
151 2 246.4 3.52 0
152 2 249.92 3.52 0
153 2 253.44 3.52 0
154 2 256.96 3.52 0
155 2 260.48 3.52 0
156 2 264 3.52 0
157 2 267.52 3.52 0
158 2 271.04 3.52 0
159 2 274.56 3.52 0
160 2 278.08 3.52 0
161 2 0 7.04 0
162 2 3.52 7.04 0
163 2 7.04 7.04 0
164 2 10.56 7.04 0
165 2 14.08 7.04 0
166 2 17.6 7.04 0
167 2 21.12 7.04 0
168 2 24.64 7.04 0
169 2 28.16 7.04 0
170 2 31.68 7.04 0
171 2 35.2 7.04 0
172 2 38.72 7.04 0
173 2 42.24 7.04 0
174 2 45.76 7.04 0
175 2 49.28 7.04 0
176 2 52.8 7.04 0
177 2 56.32 7.04 0
178 2 59.84 7.04 0
179 2 63.36 7.04 0
180 2 66.88 7.04 0
181 2 70.4 7.04 0
182 2 73.92 7.04 0
183 2 77.44 7.04 0
184 2 80.96 7.04 0
185 2 84.48 7.04 0
186 2 88 7.04 0
187 2 91.52 7.04 0
188 2 95.04 7.04 0
189 2 98.56 7.04 0
190 2 102.08 7.04 0
191 2 105.6 7.04 0
192 2 109.12 7.04 0
193 2 112.64 7.04 0
194 2 116.16 7.04 0
195 2 119.68 7.04 0
196 2 123.2 7.04 0
197 2 126.72 7.04 0
198 2 130.24 7.04 0
199 2 133.76 7.04 0
200 2 137.28 7.04 0
201 2 140.8 7.04 0
202 2 144.32 7.04 0
203 2 147.84 7.04 0
204 2 151.36 7.04 0
205 2 154.88 7.04 0
206 2 158.4 7.04 0
207 2 161.92 7.04 0
208 2 165.44 7.04 0
209 2 168.96 7.04 0
210 2 172.48 7.04 0
211 2 176 7.04 0
212 2 179.52 7.04 0
213 2 183.04 7.04 0
214 2 186.56 7.04 0
215 2 190.08 7.04 0
216 2 193.6 7.04 0
217 2 197.12 7.04 0
218 2 200.64 7.04 0
219 2 204.16 7.04 0
220 2 207.68 7.04 0
221 2 211.2 7.04 0
222 2 214.72 7.04 0
223 2 218.24 7.04 0
224 2 221.76 7.04 0
225 2 225.28 7.04 0
226 2 228.8 7.04 0
227 2 232.32 7.04 0
228 2 235.84 7.04 0
229 2 239.36 7.04 0
230 2 242.88 7.04 0
231 2 246.4 7.04 0
232 2 249.92 7.04 0
233 2 253.44 7.04 0
234 2 256.96 7.04 0
235 2 260.48 7.04 0
236 2 264 7.04 0
237 2 267.52 7.04 0
238 2 271.04 7.04 0
239 2 274.56 7.04 0
240 2 278.08 7.04 0
241 2 0 10.56 0
242 2 3.52 10.56 0
243 2 7.04 10.56 0
244 2 10.56 10.56 0
245 2 14.08 10.56 0
246 2 17.6 10.56 0
247 2 21.12 10.56 0
248 2 24.64 10.56 0
249 2 28.16 10.56 0
250 2 31.68 10.56 0
251 2 35.2 10.56 0
252 2 38.72 10.56 0
253 2 42.24 10.56 0
254 2 45.76 10.56 0
255 2 49.28 10.56 0
256 2 52.8 10.56 0
257 2 56.32 10.56 0
258 2 59.84 10.56 0
259 2 63.36 10.56 0
260 2 66.88 10.56 0
261 2 70.4 10.56 0
262 2 73.92 10.56 0
263 2 77.44 10.56 0
264 2 80.96 10.56 0
265 2 84.48 10.56 0
266 2 88 10.56 0
267 2 91.52 10.56 0
268 2 95.04 10.56 0
269 2 98.56 10.56 0
270 2 102.08 10.56 0
271 2 105.6 10.56 0
272 2 109.12 10.56 0
273 2 112.64 10.56 0
274 2 116.16 10.56 0
275 2 119.68 10.56 0
276 2 123.2 10.56 0
277 2 126.72 10.56 0
278 2 130.24 10.56 0
279 2 133.76 10.56 0
280 2 137.28 10.56 0
281 2 140.8 10.56 0
282 2 144.32 10.56 0
283 2 147.84 10.56 0
284 2 151.36 10.56 0
285 2 154.88 10.56 0
286 2 158.4 10.56 0
287 2 161.92 10.56 0
288 2 165.44 10.56 0
289 2 168.96 10.56 0
290 2 172.48 10.56 0
291 2 176 10.56 0
292 2 179.52 10.56 0
293 2 183.04 10.56 0
294 2 186.56 10.56 0
295 2 190.08 10.56 0
296 2 193.6 10.56 0
297 2 197.12 10.56 0
298 2 200.64 10.56 0
299 2 204.16 10.56 0
300 2 207.68 10.56 0
301 2 211.2 10.56 0
302 2 214.72 10.56 0
303 2 218.24 10.56 0
304 2 221.76 10.56 0
305 2 225.28 10.56 0
306 2 228.8 10.56 0
307 2 232.32 10.56 0
308 2 235.84 10.56 0
309 2 239.36 10.56 0
310 2 242.88 10.56 0
311 2 246.4 10.56 0
312 2 249.92 10.56 0
313 2 253.44 10.56 0
314 2 256.96 10.56 0
315 2 260.48 10.56 0
316 2 264 10.56 0
317 2 267.52 10.56 0
318 2 271.04 10.56 0
319 2 274.56 10.56 0
320 2 278.08 10.56 0
321 2 0 14.08 0
322 2 3.52 14.08 0
323 2 7.04 14.08 0
324 2 10.56 14.08 0
325 2 14.08 14.08 0
326 2 17.6 14.08 0
327 2 21.12 14.08 0
328 2 24.64 14.08 0
329 2 28.16 14.08 0
330 2 31.68 14.08 0
331 2 35.2 14.08 0
332 2 38.72 14.08 0
333 2 42.24 14.08 0
334 2 45.76 14.08 0
335 2 49.28 14.08 0
336 2 52.8 14.08 0
337 2 56.32 14.08 0
338 2 59.84 14.08 0
339 2 63.36 14.08 0
340 2 66.88 14.08 0
341 2 70.4 14.08 0
342 2 73.92 14.08 0
343 2 77.44 14.08 0
344 2 80.96 14.08 0
345 2 84.48 14.08 0
346 2 88 14.08 0
347 2 91.52 14.08 0
348 2 95.04 14.08 0
349 2 98.56 14.08 0
350 2 102.08 14.08 0
351 2 105.6 14.08 0
352 2 109.12 14.08 0
353 2 112.64 14.08 0
354 2 116.16 14.08 0
355 2 119.68 14.08 0
356 2 123.2 14.08 0
357 2 126.72 14.08 0
358 2 130.24 14.08 0
359 2 133.76 14.08 0
360 2 137.28 14.08 0
361 2 140.8 14.08 0
362 2 144.32 14.08 0
363 2 147.84 14.08 0
364 2 151.36 14.08 0
365 2 154.88 14.08 0
366 2 158.4 14.08 0
367 2 161.92 14.08 0
368 2 165.44 14.08 0
369 2 168.96 14.08 0
370 2 172.48 14.08 0
371 2 176 14.08 0
372 2 179.52 14.08 0
373 2 183.04 14.08 0
374 2 186.56 14.08 0
375 2 190.08 14.08 0
376 2 193.6 14.08 0
377 2 197.12 14.08 0
378 2 200.64 14.08 0
379 2 204.16 14.08 0
380 2 207.68 14.08 0
381 2 211.2 14.08 0
382 2 214.72 14.08 0
383 2 218.24 14.08 0
384 2 221.76 14.08 0
385 2 225.28 14.08 0
386 2 228.8 14.08 0
387 2 232.32 14.08 0
388 2 235.84 14.08 0
389 2 239.36 14.08 0
390 2 242.88 14.08 0
391 2 246.4 14.08 0
392 2 249.92 14.08 0
393 2 253.44 14.08 0
394 2 256.96 14.08 0
395 2 260.48 14.08 0
396 2 264 14.08 0
397 2 267.52 14.08 0
398 2 271.04 14.08 0
399 2 274.56 14.08 0
400 2 278.08 14.08 0
401 2 0 17.6 0
402 2 3.52 17.6 0
403 2 7.04 17.6 0
404 2 10.56 17.6 0
405 2 14.08 17.6 0
406 2 17.6 17.6 0
407 2 21.12 17.6 0
408 2 24.64 17.6 0
409 2 28.16 17.6 0
410 2 31.68 17.6 0
411 2 35.2 17.6 0
412 2 38.72 17.6 0
413 2 42.24 17.6 0
414 2 45.76 17.6 0
415 2 49.28 17.6 0
416 2 52.8 17.6 0
417 2 56.32 17.6 0
418 2 59.84 17.6 0
419 2 63.36 17.6 0
420 2 66.88 17.6 0
421 2 70.4 17.6 0
422 2 73.92 17.6 0
423 2 77.44 17.6 0
424 2 80.96 17.6 0
425 2 84.48 17.6 0
426 2 88 17.6 0
427 2 91.52 17.6 0
428 2 95.04 17.6 0
429 2 98.56 17.6 0
430 2 102.08 17.6 0
431 2 105.6 17.6 0
432 2 109.12 17.6 0
433 2 112.64 17.6 0
434 2 116.16 17.6 0
435 2 119.68 17.6 0
436 2 123.2 17.6 0
-
خودت تا کجاش رفتی؟ بگو مشکلت کجاست.
-
سلام.
یه خورده ابهام در مورد سوالتون برام بوجود اومده، اگه رفعش کنید شاید بتونم کمکتون کنم.
طبق این نتایج:
ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp$ awk -vOFS="\t" 'NF==5 && $3==$4 {print $3, $4,$5}' source | sort -n
0 0 0
3.52 3.52 0
7.04 7.04 0
10.56 10.56 0
14.08 14.08 0
17.6 17.6 0
278.08 278.08 278.08
از بین این دیتاهایی که گذاشتید من تمام سطرهای پنج ستونهای که ستون سوم و چهارمش با هم برابر هستند رو چاپ کردم.
منتها ابهام اینجاست که از هیچ کدوم از این طرها شما دو تا ندارید که بخواید طبق مقدار ستون پنجم انتخابشون کنید.
-
کاملا حرف شما درسته . این قسمتی از جواب برنامه ی خودم بود که متاسفانه توشون ستون سوم و چهارم تکرار نشدن، اما من میخوام از بین اون ستون هایی که ردیف سوم و چهارمشون برابرن،فقط اون سطری باقی بمونه که ردیف پنجمش بزرگتر از همه س . ایا این برنامه این کارو میکنه ؟
-
کاملا حرف شما درسته . این قسمتی از جواب برنامه ی خودم بود که متاسفانه توشون ستون سوم و چهارم تکرار نشدن، اما من میخوام از بین اون ستون هایی که ردیف سوم و چهارمشون برابرن،فقط اون سطری باقی بمونه که ردیف پنجمش بزرگتر از همه س . ایا این برنامه این کارو میکنه ؟
واللا در حال حاضر الگوریتمی که بتونه خیلی بهینه این کار رو براتون انجام بده به ذهنم نمیرسه(لااقل با پایتون)، باید روش فکر کنم. ولی این اسکریپت AWK کاری که میخواید رو انجام میده.(امیدوارم ترتیب سطرها مهم نباشه، که البته میشه ترتیب سطرها رو هم حفظ کرد که به نظرم زیاد برای پرفورمنس اسکریپت خوب نیست.)
#!/bin/bash
awk '
NF==5 && $3==$4 {
if ($3 in max5){
if ($5 > max5[$3]){
max5[$3]=$5
lineHolder[$3]=$0
}
}else{
max5[$3]=$5
lineHolder[$3]=$0
}
}
NF==5 && $3!=$4 {
print
}
END {
for (i in lineHolder){
print lineHolder[i]
}
delete max5
delete lineHolder
}
' "$1" | sort -n | column -t
دیتاهایی که برای تست انتخاب کردم:
1 2 0 0 12.325
27033 1640 23517 17240 26872
87 21272 19958 22037 13386
21795 4840 27395 25726 19225
512000 1 278.08 278.08 278.08
30484 27772 27080 1038 28194
914 26259 31041 12751 17026
244 2 10.56 10.56 54.25
19301 28865 1212 15014 13332
13082 7324 30265 27130 18809
82 2 3.52 3.52 10
27930 19408 24736 25856 2013
31960 23376 30670 4205 29465
1 2 0 0 0
512000 1 278.08 278.08 278.18
13280 29320 5806 9668 4722
189 18824 23559 30526 23638
21618 22655 9397 2508 29365
16411 12682 29546 29613 20746
244 2 10.56 10.56 53.75
4780 5894 17484 11071 31197
3473 18722 7037 23313 30944
244 2 10.56 10.56 54
11163 24921 18840 14636 6122
6284 10256 24329 1531 23432
22177 7698 22399 3834 5480
406 2 17.6 17.6 6
16321 23440 32277 25179 2600
27494 15847 26311 26677 9994
22688 9494 31907 23668 18598
990 3657 12988 29304 26203
82 2 3.52 3.52 19.75
21727 12484 14384 8669 24409
26549 19437 13666 29183 8238
11780 11387 7677 8721 16645
21191 22072 9676 21098 25895
325 2 14.08 14.08 6
406 2 17.6 17.6 3.25
1 2 0 0 6.5
9856 18896 19692 27390 7405
325 2 14.08 14.08 8
18727 21900 30788 31734 10020
9588 11060 2774 10139 3059
23478 5869 16742 6354 3819
82 2 3.52 3.52 14
7250 27142 490 27628 29063
28262 16343 63 1615 27829
28110 9396 21775 2926 32665
167 3644 19128 10728 25901
16520 31089 15282 19995 975
163 2 7.04 7.04 0
406 2 17.6 17.6 7
163 2 7.04 7.04 0
1009 26446 1280 28820 24775
8836 26140 30106 30978 13388
13647 6100 31813 21440 13466
163 2 7.04 7.04 7.5
512000 1 278.08 278.08 278.06
22139 25430 21304 16133 5611
15273 29674 20969 30200 17961
11203 18118 14305 17467 8832
28129 3232 27111 27290 22391
325 2 14.08 14.08 8
19879 17899 32318 24778 9265
28468 31553 13558 17160 1075
27769 8905 23192 21010 27649
و نتیجه بعد از اعمال اسکریپت:
1 2 0 0 12.325
82 2 3.52 3.52 19.75
87 21272 19958 22037 13386
163 2 7.04 7.04 7.5
167 3644 19128 10728 25901
189 18824 23559 30526 23638
244 2 10.56 10.56 54.25
325 2 14.08 14.08 8
406 2 17.6 17.6 7
914 26259 31041 12751 17026
990 3657 12988 29304 26203
1009 26446 1280 28820 24775
3473 18722 7037 23313 30944
4780 5894 17484 11071 31197
6284 10256 24329 1531 23432
7250 27142 490 27628 29063
8836 26140 30106 30978 13388
9588 11060 2774 10139 3059
9856 18896 19692 27390 7405
11163 24921 18840 14636 6122
11203 18118 14305 17467 8832
11780 11387 7677 8721 16645
13082 7324 30265 27130 18809
13280 29320 5806 9668 4722
13647 6100 31813 21440 13466
15273 29674 20969 30200 17961
16321 23440 32277 25179 2600
16411 12682 29546 29613 20746
16520 31089 15282 19995 975
18727 21900 30788 31734 10020
19301 28865 1212 15014 13332
19879 17899 32318 24778 9265
21191 22072 9676 21098 25895
21618 22655 9397 2508 29365
21727 12484 14384 8669 24409
21795 4840 27395 25726 19225
22139 25430 21304 16133 5611
22177 7698 22399 3834 5480
22688 9494 31907 23668 18598
23478 5869 16742 6354 3819
26549 19437 13666 29183 8238
27033 1640 23517 17240 26872
27494 15847 26311 26677 9994
27769 8905 23192 21010 27649
27930 19408 24736 25856 2013
28110 9396 21775 2926 32665
28129 3232 27111 27290 22391
28262 16343 63 1615 27829
28468 31553 13558 17160 1075
30484 27772 27080 1038 28194
31960 23376 30670 4205 29465
512000 1 278.08 278.08 278.18
به نظر من که اصلا نیازی به پایتون هم نیست.
موفق باشید.
-
مچکرم اقا احسان . خدا روشکر ترتیب سطرها مهم نیست . بازم ممنون .
-
این پست با کمک دوستان یه گره کورو برای من باز کرد و خیلی بهم کمک کرد.این الگوریتم یه قسمت دیگه هم داره . نمیدونم ایا میشه این رو هم با همین دستور awk انجام داد یا نه .
برای کل ردیف هایی که(بعد از حذف سطرهایی با ردیف های سوم و چهارم مشابه اما با ردیف پنجم کمتر)باقی موندن،میانگین ردیف پنجم رو محاسبه کنه و تک تک ردیف پنجم همه ی سطرها رو به صورت تک تک ازش کم کنه و به توان 2 برشونه و بعدش همه ی عدد های حاصل شده رو جمع کنه .که تو قسمت پایین این کارو نشون دادم .
1 2 0 0 12.325
82 2 3.52 3.52 19.75
87 21272 19958 22037 13386
میانگین ردیف پنجم: 4472.691666667
(12.235-4472.691666667)^2+(19.75-4472.691666667)^2+(13386-4472.691666667)^2 = ...
بازم ممنونم به خاطر وقتی که میذارید.
-
خب ظاهرا استفاده از awk برای شما خیلی کار راه اندازه، پیشنهاد میکنم روی یادگیریش وقت بذارید حتما.
اما در این مورد کافیه شما نتایج نهاییای رو که از مرحله قبل بدست میارید بدید به دستور زیر تا میانگین رو حساب کنه:
ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp$ awk -MO '{sum+=$5};END{print sum/NR}' final
14655.5
و بعد برای قسمت بعدی هم از دستور زیر استفاده کنید:
ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp$ awk -MO -vCONST=14655.5 '{sum+=($5-CONST)^2};END{printf("%16.5f\n",sum)}' final
6058642531.83803
دقت کنید که این نتایج به ازای این دیتاهای خاصی که من به صورت رندوم تهیه کردم به دست اومده.
-
http://pizza.sandia.gov/doc/dump.html
http://lammps.sandia.gov/doc/Section_python.html
http://pandas.pydata.org
همیشه ماهیت داده و منشاء اون رو بنویسید.
-
از همه ی دوستان مچکرم . مخصوصا اقای فعالپور
-
نحوه ی اجرای این اسکریپتها،صرفا به صورت کپی اونها تو ترمیناله ؟ یا باید جور دیگه ای اجراشون کنم؟
-
اگر منظورتون بش هست که میتونید اونها رو داخل فایلی با پسوند sh بریزید ، اول فایل بنویسید :
#!/bin/bash
و با این دستور بهش اجازه ی اجرا شدن بدید : chmod +x file.sh
بعدش هم اجراش کنید .
-
ممنونم کوشای عزیز. اما چطور باید فایل ورودی رو به این اسکریپت معرفی کنم ؟ من نه تو خود اسکریپت نه تو خود کد chmod جایی برای وارد کردن فایل ورودی ندیدم .
-
من برای اجرای کد :
#!/bin/bash
awk '
NF==5 && $3==$4 {
if ($3 in max5){
if ($5 > max5[$3]){
max5[$3]=$5
lineHolder[$3]=$0
}
}else{
max5[$3]=$5
lineHolder[$3]=$0
}
}
NF==5 && $3!=$4 {
print
}
END {
for (i in lineHolder){
print lineHolder[i]
}
delete max5
delete lineHolder
}
' "$1" | sort -n | column -t
از دستور
awk –f hazfmoshbeh.awk infile.txt
استفاده کردم . اما خطای زیر رو میده :
awk: hazfmoshbeh.awk:25: "$1" | sort -n | column -t
awk: hazfmoshbeh.awk:25: ^ syntax error
awk: hazfmoshbeh.awk:25: "$1" | sort -n | column -t
awk: hazfmoshbeh.awk:25: ^ syntax error
فک میکنیپد مشکلش کجاست ؟
-
سلام.
این کارتون اشتباهه. زمانی مبتونی از یه همچین سینتکسی استفاده کنی که کل اون اسکریپت مربوط به awk باشه که توی اینجا sort و column جزو سینتکس awkنیستند.
شما کل اون اسکریپتی که نوشتم رو بریز توی یه فایل، بهش مجوز لازم رو بده، بعد صداش کن و فایل مورد نظر رو بهش پاس بده.
-
من که تو لینوکس صفرم . میشه راهنماییم کنید که دقیقا باید چیکار کنم ؟ کدهایی که باید استفاده کنم ...
دو سه روزه که دارم سرچ میزنم اما هنوز هیچی دستگیرم نشده . نمیدونم باید چیکار کنم این کدها رو و چطور استفاده کنم ازشون .
-
وقتی کد
ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp$ awk -MO '{sum+=$5};END{print sum/NR}' final
رو وارد میکنم این جوابو میده :
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options: GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-decimal-data
-N --use-lc-numeric
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version
To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.
gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.
Examples:
gawk '{ sum += $1 }; END { print sum }' file
gawk -F: '{ print $1 }' /etc/passwd
فک میکنید مشکلش چیه ؟
-
سوئیچ M- برای محاسبات با اعداد بزرگ بود که ظاهرا ورژن awk شما ازش پشتیبانی نمیکنه.
بیخیالش بشید و حذفش کنید اون سوئیچ رو.
خروجیه این دستور رو بدید لطفا:
ehsan@ehsan-SVF152190X:~$ awk --version
GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.3, GNU MP 6.0.0)
Copyright (C) 1989, 1991-2014 Free Software Foundation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
اگه GNU MPFR و GNU MP توی دو خط اول دیده نمیشن پیشنهاد میکنم از awkبه جای gawk استفاده کنید.
-
دمتون گرم . مشکل حل شد اساسی. امیدوارم بتونم جبران کنم .
-
عنوان مطلب رو از پایتون به «چطور چندین سطر یا ستون رو باهم مقایسه کنم؟» تغییر بده (: