условная проверка awk дает неверный результат - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть скрипт, из которого я делаю условную проверку в столбце 6 $6, чтобы напечатать значения, которые 9147420 или больше 9147420 с awk, но он не дает правильных результатов.

Я использую Linux в качестве платформы.

Ниже приведен вывод скрипта ..

$ ./population | head
      Country (or dependency)  Population (2020) Yearly Change  Net Change  Density (P/Km²)  Land Area (Km²)  Migrants (net) Fert. Rate Med. Age Urban Pop % World Share
0                       China         1439323776        0.39 %     5540090              153          9388211       -348399.0        1.7       38        61 %     18.47 %
1                       India         1380004385        0.99 %    13586631              464          2973190       -532687.0        2.2       28        35 %     17.70 %
2               United States          331002651        0.59 %     1937734               36          9147420        954806.0        1.8       38        83 %      4.25 %
3                   Indonesia          273523615        1.07 %     2898047              151          1811570        -98955.0        2.3       30        56 %      3.51 %
4                    Pakistan          220892340        2.00 %     4327022              287           770880       -233379.0        3.6       23        35 %      2.83 %
5                      Brazil          212559417        0.72 %     1509890               25          8358140         21200.0        1.7       33        88 %      2.73 %
6                     Nigeria          206139589        2.58 %     5175990              226           910770        -60000.0        5.4       18        52 %      2.64 %
7                  Bangladesh          164689383        1.01 %     1643222             1265           130170       -369501.0        2.1       28        39 %      2.11 %
8                      Russia          145934462        0.04 %       62206                9         16376870        182456.0        1.8       40        74 %      1.87 %
9                      Mexico          128932753        1.06 %     1357224               66          1943950        -60000.0        2.1       29        84 %      1.65 %
10                      Japan          126476461       -0.30 %     -383840              347           364555         71560.0        1.4       48        92 %      1.62 %
11                   Ethiopia          114963588        2.57 %     2884858              115          1000000         30000.0        4.3       19        21 %      1.47 %
12                Philippines          109581078        1.35 %     1464463              368           298170        -67152.0        2.6       26        47 %      1.41 %
13                      Egypt          102334404        1.94 %     1946331              103           995450        -38033.0        3.3       25        43 %      1.31 %
14                    Vietnam           97338579        0.91 %      876473              314           310070        -80000.0        2.1       32        38 %      1.25 %
15                   DR Congo           89561403        3.19 %     2770836               40          2267050         23861.0        6.0       17        46 %      1.15 %
16                     Turkey           84339067        1.09 %      909452              110           769630        283922.0        2.1       32        76 %      1.08 %
17                       Iran           83992949        1.30 %     1079043               52          1628550        -55000.0        2.2       32        76 %      1.08 %
18                    Germany           83783942        0.32 %      266897              240           348560        543822.0        1.6       46        76 %      1.07 %
19                   Thailand           69799978        0.25 %      174396              137           510890         19444.0        1.5       40        51 %      0.90 %
20             United Kingdom           67886011        0.53 %      355839              281           241930        260650.0        1.8       40        83 %      0.87 %
21                     France           65273511        0.22 %      143783              119           547557         36527.0        1.9       42        82 %      0.84 %
22                      Italy           60461826       -0.15 %      -88249              206           294140        148943.0        1.3       47        69 %      0.78 %
23                   Tanzania           59734218        2.98 %     1728755               67           885800        -40076.0        4.9       18        37 %      0.77 %
24               South Africa           59308690        1.28 %      750420               49          1213090        145405.0        2.4       28        67 %      0.76 %
25                    Myanmar           54409800        0.67 %      364380               83           653290       -163313.0        2.2       29        31 %      0.70 %
26                      Kenya           53771296        2.28 %     1197323               94           569140        -10000.0        3.5       20        28 %      0.69 %
27                South Korea           51269185        0.09 %       43877              527            97230         11731.0        1.1       44        82 %      0.66 %
28                   Colombia           50882891        1.08 %      543448               46          1109500        204796.0        1.8       31        80 %      0.65 %
29                      Spain           46754778        0.04 %       18002               94           498800         40000.0        1.3       45        80 %      0.60 %
30                     Uganda           45741007        3.32 %     1471413              229           199810        168694.0        5.0       17        26 %      0.59 %
31                  Argentina           45195774        0.93 %      415097               17          2736690          4800.0        2.3       32        93 %      0.58 %
32                    Algeria           43851044        1.85 %      797990               18          2381740        -10000.0        3.1       29        73 %      0.56 %
33                      Sudan           43849260        2.42 %     1036022               25          1765048        -50000.0        4.4       20        35 %      0.56 %
34                    Ukraine           43733762       -0.59 %     -259876               75           579320         10000.0        1.4       41        69 %      0.56 %
35                       Iraq           40222493        2.32 %      912710               93           434320          7834.0        3.7       21        73 %      0.52 %
36                Afghanistan           38928346        2.33 %      886592               60           652860        -62920.0        4.6       18        25 %      0.50 %
37                     Poland           37846611       -0.11 %      -41157              124           306230        -29395.0        1.4       42        60 %      0.49 %
38                     Canada           37742154        0.89 %      331107                4          9093510        242032.0        1.5       41        81 %      0.48 %
39                    Morocco           36910560        1.20 %      438791               83           446300        -51419.0        2.4       30        64 %      0.47 %
40               Saudi Arabia           34813871        1.59 %      545343               16          2149690        134979.0        2.3       32        84 %      0.45 %
41                 Uzbekistan           33469203        1.48 %      487487               79           425400         -8863.0        2.4       28        50 %      0.43 %
42                       Peru           32971854        1.42 %      461401               26          1280000         99069.0        2.3       31        79 %      0.42 %
43                     Angola           32866272        3.27 %     1040977               26          1246700          6413.0        5.6       17        67 %      0.42 %

Я попробовал следующее:

$ ./population | awk '{ if ($6 >= 9147420) print $0 }'
      Country (or dependency)  Population (2020) Yearly Change  Net Change  Density (P/Km²)  Land Area (Km²)  Migrants (net) Fert. Rate Med. Age Urban Pop % World Share
1                       India         1380004385        0.99 %    13586631              464          2973190       -532687.0        2.2       28        35 %     17.70 %

Что я делаю неправильно.

Редактировать:

, поскольку это сценарий python, который я вижу Land Area (Km²) - это 6-й столбец.

Index(['Country (or dependency)', 'Population (2020)', 'Yearly Change',
       'Net Change', 'Density (P/Km²)', 'Land Area (Km²)', 'Migrants (net)',
       'Fert. Rate', 'Med. Age', 'Urban Pop %', 'World Share'],
      dtype='object')

Ответы [ 3 ]

3 голосов
/ 10 апреля 2020

Сохраняйте это простым и считайте с конца!

awk 'FNR==1 || $(NF-7)>=9147420' file
2 голосов
/ 10 апреля 2020
./population |  awk -F'  +'  'NR==1 || $7>=9147420' 

даст вам:

  Country (or dependency)  Population (2020) Yearly Change  Net Change  Density (P/Km²)  Land Area (Km²)  Migrants (net) Fert. Rate Med. Age Urban Pop % World Share
0                       China         ....
2               United States         ...
8                      Russia   ...
2 голосов
/ 10 апреля 2020

Не могли бы вы попробовать следующее.

./population | awk -F'%' '{split($2,array," ");if(array[3]>=9147420){print}}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...