با سلام. من میخواستم با bashscript یا زبان برنامه نویسی awk ،الگوریتم زیر رو روی یه فایل که دارای 5 تا ستون و 500000 سطره پیاده کنم: (سطر دوم این فایل، فقط دارای مقادیر 1 یا 2 است)
1.تمام سطرهایی که ستون سوم و ستون چهارم آنها با یکدیگر مساوی اند (ستون سوم سطرها با هم مساوی باشد و علاوه بر ستون سوم ،ستون چهارمشان هم با هم مساوی باشد) اگر در بین ستون دومشان عدد 2 داشته باشند، همه ی آن سطرهایی که ستون دومشان 1 است حذف شوند و از بین سطرهایی که ستون دومشان 2 است فقط سطری حفظ شود که ستون پنجمش بیشترین مقدار را دارد و بقیه ی سطرها حذف شوند.
2.اما اگر (در بین تمام سطرهایی که ستون سوم و ستون چهارم آنها با یکدیگر مساوی اند) در بین ستون دومشان عدد 2 نداشته باشند، فقط سطری حفظ شود که ستون پنجمش کمترین مقدار را داشته باشد.
نمونه اسکریپت:
1 2 0 0 12.325
27033 1 23517 17240 26872
87 2 19958 22037 13386
21795 1 27395 25726 19225
512000 1 278.08 278.08 278.08
30484 2 27080 1038 28194
914 2 31041 12751 17026
244 2 10.56 10.56 54.25
19301 2 1212 15014 13332
13082 1 30265 27130 18809
82 2 3.52 3.52 10
27930 1 24736 25856 2013
31960 2 30670 4205 29465
1 2 0 0 0
512000 1 278.08 278.08 278.18
13280 2 5806 9668 4722
189 1 23559 30526 23638
21618 2 9397 2508 29365
16411 1 29546 29613 20746
244 2 10.56 10.56 53.75
4780 1 17484 11071 31197
3473 1 7037 23313 30944
244 2 10.56 10.56 54
11163 2 18840 14636 6122
6284 1 24329 1531 23432
22177 1 22399 3834 5480
406 2 17.6 17.6 6
16321 2 32277 25179 2600
27494 1 26311 26677 9994
22688 1 31907 23668 18598
990 2 12988 29304 26203
82 2 3.52 3.52 19.75
21727 1 14384 8669 24409
26549 1 13666 29183 8238
11780 1 7677 8721 16645
21191 2 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 1 19692 27390 7405
325 2 14.08 14.08 8
18727 2 30788 31734 10020
9588 1 2774 10139 3059
23478 1 16742 6354 3819
82 2 3.52 3.52 14
7250 1 490 27628 29063
28262 1 63 1615 27829
28110 2 21775 2926 32665
167 1 19128 10728 25901
16520 2 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 1 1280 28820 24775
8836 2 30106 30978 13388
13647 1 31813 21440 13466
163 2 7.04 7.04 7.5
512000 1 278.08 278.08 278.06
22139 2 21304 16133 5611
15273 2 20969 30200 17961
11203 1 14305 17467 8832
28129 1 27111 27290 22391
325 2 14.08 14.08 8
19879 1 32318 24778 9265
28468 1 13558 17160 1075
27769 2 23192 21010 27649
در پست بعدی یه مثال از این الگوریتم اوردم . ممنونم از همه ی دوستای خوبم به خاطر راهنماییتون.
اوبونتو...
ما را در سایت اوبونتو دنبال می کنید
برچسب : نویسنده : استخدام کار ubuntu بازدید : 116 تاريخ : دوشنبه 23 فروردين 1395 ساعت: 3:30