پاسخ : انتخاب سطرهای خاص با bashscript یا awk

ساخت وبلاگ
با سلام. من میخواستم با 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 بازدید : 119 تاريخ : دوشنبه 23 فروردين 1395 ساعت: 4:38