Как извлечь таблицу из дампа ссылок?

Вопрос или проблема

Следующее – это links -dump, из которого я хочу извлечь таблицу со всеми столбцами во всех файлах… Я пытался использовать awk, но не смог

     * Главная
          * Главная страница
     * Континенты
          * Африка
          * Америка
          * Азия
          * Европа
          * Океания/Австралия
     * Страны
          * Страны от А до Я
          * Зависимые территории
          * Страны по площади
          * Население стран
          * Флаги стран
          * Мировые валюты
     * Города
          * Мегаполисы
          * Известные города
          * Столичные города Африки
          * Столичные города Америки
          * Столичные города Азии
          * Столичные города Австралии
          * Столичные города Европы
          * Столичные города США
          * Крупнейшие города США
     * Достопримечательности
          * Городские иконы
          * Места силы
          * Священные горы
     * Языки
          * Языки по странам
          * Языковые коды
          * Наиболее распространенные языки
     * Карты
          * Карты по стране
     * Международные коды
          * Коды стран
          * Международные телефонные коды
          * Коды валют
          * Коды аэропортов


    Логотип Nations Online 
    Один мир           
    Nations Online      

   Главная Земля Континенты Страны мира Коды стран Коды стран
   Список                                       

   связанные: Список международных телефонных кодов     
             ___ Список кодов стран                                           

   ISO Alpha-2, Alpha-3 и числовые коды стран                                  
   Код страны ISO - это международно                                   
   признанный код, который обозначает для каждой  
   страны и большинства зависимых территорий  
   сочетание из двух букв или трех букв, это как  
   акроним, который     
   обозначает страну.                      

   Этот код используется, например, для      
   суффиксов из двух букв, таких как .us (Соединенные    
   Штаты), .fr (Франция) или .de (Германия) в  
   доменах верхнего уровня (для стран) в интернете.                                  IFrame
                                              Instagram
   Трехбуквенный код также часто используется   
   на мероприятиях с международными участниками  ____________________________
   из различных стран, таких как спортивные         [ Поиск ]
   встречи или конкурсы песен, где вы можете   
   увидеть аббревиатуры, такие как CAN (для Канады),   
   DNK (для Дании), AUS (для Австралии).    

   Это список двухбуквенных кодов (ISO    
   alpha-2) и трехбуквенных кодов (ISO   
   alpha-3), а также числовой код, используемый     
   ООН M49 для стран,     
   зависимостей и других территорий.             
   (Зависимости выделены курсивом)    

   (Чтобы отсортировать данные, щелкните на соответствующем  
   заголовке столбца (чтобы отсортировать несколько       
   столбцов, удерживайте клавишу Shift, выбирая     
   столбцы для сортировки).           


                                                               ISO Числовой    
       Название страны или области           ISO "ALPHA-2 ISO ALPHA-3 Код           
                                      Код         Код        UN M49         
                                                               Числовой код 
       Афганистан                    AF           AFG         004            
   Аланды                          AX           ALA         248            
       Албания                        AL           ALB         008            
       Алжир                         DZ           DZA         012            
       Американское Самоа           AS           ASM         016            
       Андорра                        AD           AND         020            
       Ангола                         AO           AGO         024            
       Ангилья                       AI           AIA         660            
       Антарктида                     AQ           ATA         010            
       Антигуа и Барбуда            AG           ATG         028            
       Аргентина                      AR           ARG         032            
       Армения                        AM           ARM         051            
       Аруба                          AW           ABW         533            
       Австралия                      AU           AUS         036            
       Австрия                        AT           AUT         040            
       Азербайджан                     AZ           AZE         031            
       Багамы                        BS           BHS         044            
       Бахрейн                        BH           BHR         048            
       Бангладеш                     BD           BGD         050            
       Барбадос                       BB           BRB         052            
       Беларусь                       BY           BLR         112            
       Бельгия                        BE           BEL         056            
       Белиз                          BZ           BLZ         084            
       Бенин                          BJ           BEN         204            
       Бермуды                        BM           BMU         060            
       Бутан                          BT           BTN         064            
       Боливия                       BO           BOL         068            
       Босния и Герцеговина         BA           BIH         070            
       Ботсвана                       BW           BWA         072            
       Остров Буве                  BV           BVT         074            
       Бразилия                       BR           BRA         076            
       Британские Виргинские Острова VG           VGB         092            
       Британская территория океана IO           IOT         086            
       Бруней Даруссалам              BN           BRN         096            
       Болгария                       BG           BGR         100            
       Буркина-Фасо                   BF           BFA         854            
       Бурунди                        BI           BDI         108            
       Камбоджа                       KH           KHM         116            
       Камерун                       CM           CMR         120            
       Канада                         CA           CAN         124            
       Кабо-Verde                     CV           CPV         132            
       Острова Кайман                 KY           CYM         136            
       Центральноафриканская Республика CF           CAF         140            
       Чад                           TD           TCD         148            
       Чили                          CL           CHL         152            
       Китай                          CN           CHN         156            
       Гонконг, Специальный           HK           HKG         344            
       административный район Китая                                         
       Макао, Специальный            MO           MAC         446            
       административный район Китая                                                        
       Остров Рождества               CX           CXR         162            
       Острова Кокос (Килинг)        CC           CCK         166            
       Колумбия                       CO           COL         170            
       Коморы                        KM           COM         174            
       Конго (Браззавиль)            CG           COG         178            
       Конго, Демократическая Республика CD           COD         180            
       острова                                                                    
       Острова Кука                   CK           COK         184            
       Коста-Рика                     CR           CRI         188            
       Кот-д'Ивуар                   CI           CIV         384            
       Хорватия                       HR           HRV         191            
       Куба                           CU           CUB         192            
       Кипр                           CY           CYP         196            
       Чехия                          CZ           CZE         203            
       Дания                          DK           DNK         208            
       Джибути                       DJ           DJI         262            
       Доминика                       DM           DMA         212            
       Доминиканская Республика       DO           DOM         214            
       Эквадор                       EC           ECU         218            
       Египет                          EG           EGY         818            
       Сальвадор                    SV           SLV         222            
       Экваториальная Гвинея          GQ           GNQ         226            
       Эритрея                        ER           ERI         232            
       Эстония                        EE           EST         233            
       Эфиопия                       ET           ETH         231            
       Фолклендские острова (Мальвины) FK           FLK         238            
       Фарерские острова              FO           FRO         234            
       Фиджи                          FJ           FJI         242            
       Финляндия                      FI           FIN         246            
       Франция                        FR           FRA         250            
       Французская Гвиана            GF           GUF         254            
       Французская Полинезия         PF           PYF         258            
       Французские Южные территории  TF           ATF         260            
       Габон                          GA           GAB         266            
       Гамбия                         GM           GMB         270            
       Грузия                         GE           GEO         268            
       Германия                       DE           DEU         276            
       Гана                           GH           GHA         288            
       Гибралтар                      GI           GIB         292            
       Греция                         GR           GRC         300            
       Гренландия                    GL           GRL         304            
       Гренада                        GD           GRD         308            
       Гваделупа                     GP           GLP         312            
       Гуам                           GU           GUM         316            
       Гватемала                      GT           GTM         320            
       Гернси                         GG           GGY         831            
       Гвинея                        GN           GIN         324            
       Гвинея-Бисау                  GW           GNB         624            
       Гайана                         GY           GUY         328            
       Гаити                          HT           HTI         332            
       Острова Херда и Макаду        HM           HMD         334            
       Острова                                                                
       Святой Престол (Ватикан)     VA           VAT         336            
       Гондурас                       HN           HND         340            
       Венгрия                        HU           HUN         348            
       Исландия                       IS           ISL         352            
       Индия                          IN           IND         356            
       Индонезия                      ID           IDN         360            
       Иран, Исламская Республика      IR           IRN         364            
       Ирак                           IQ           IRQ         368            
       Ирландия                      IE           IRL         372            
       Остров Мэн                    IM           IMN         833            
       Израиль                       IL           ISR         376            
       Италия                        IT           ITA         380            
       Ямайка                        JM           JAM         388            
       Япония                        JP           JPN         392            
       Джерси                         JE           JEY         832            
       Иордания                       JO           JOR         400            
       Казахстан                     KZ           KAZ         398            
       Кения                          KE           KEN         404            
       Кирибати                       KI           KIR         296            
       Корея, Демократическая народная     KP           PRK         408            
       Республика                                                            
       Корея, Республика             KR           KOR         410            
       Кувейт                         KW           KWT         414            
       Кыргызстан                     KG           KGZ         417            
       Лаос ПДР                       LA           LAO         418            
       Латвия                         LV           LVA         428            
       Ливан                          LB           LBN         422            
       Лесото                        LS           LSO         426            
       Либерия                        LR           LBR         430            
       Ливия                          LY           LBY         434            
       Лихтенштейн                  LI           LIE         438            
       Литва                          LT           LTU         440            
       Люксембург                     LU           LUX         442            
       Македония, Республика         MK           MKD         807            
       Мадагаскар                     MG           MDG         450            
       Малави                         MW           MWI         454            
       Малайзия                       MY           MYS         458            
       Мальдивы                       MV           MDV         462            
       Мали                           ML           MLI         466            
       Мальта                         MT           MLT         470            
       Маршалловы Острова           MH           MHL         584            
       Мартиника                      MQ           MTQ         474            
       Мавритания                     MR           MRT         478            
       Маврикий                     MU           MUS         480            
       Майотта                        YT           MYT         175            
       Мексика                       MX           MEX         484            
       Микронезия, Федеративные Штаты FM           FSM         583            
       Молдова                        MD           MDA         498            
       Монако                         MC           MCO         492            
       Монголия                       MN           MNG         496            
       Черногория                     ME           MNE         499            
       Монтсеррат                     MS           MSR         500            
       Марокко                        MA           MAR         504            
       Мозамбик                      MZ           MOZ         508            
       Мьянма                        MM           MMR         104            
       Намибия                       NA           NAM         516            
       Науру                          NR           NRU         520            
       Непал                          NP           NPL         524            
       Нидерланды                    NL           NLD         528            
       Нидерландские Антилы          AN           ANT         530            
       Новая Каледония                NC           NCL         540            
       Новая Зеландия                NZ           NZL         554            
       Никарагуа                     NI           NIC         558            
       Нигер                          NE           NER         562            
       Нигерия                        NG           NGA         566            
       Ниуэ                           NU           NIU         570            
       Остров Норфолк                 NF           NFK         574            
       Северные Марианские Острова MP           MNP         580            
       Норвегия                       NO           NOR         578            
       Оман                           OM           OMN         512            
       Пакистан                       PK           PAK         586            
       Палау                          PW           PLW         585            
       Палестинская территория,         PS           PSE         275            
       оккупированная                                                               
       Панама                         PA           PAN         591            
       Папуа - Новая Гвинея           PG           PNG         598            
       Парагвай                       PY           PRY         600            
       Перу                           PE           PER         604            
       Филиппины                     PH           PHL         608            
       Питкерн                       PN           PCN         612            
       Польша                         PL           POL         616            
       Португалия                     PT           PRT         620            
       Пуэрто-Рико                  PR           PRI         630            
       Катар                          QA           QAT         634            
       Реюньон                        RE           REU         638            
       Румыния                        RO           ROU         642            
       Российская Федерация         RU           RUS         643            
       Руанда                         RW           RWA         646            
       Сен-Бартельми                 BL           BLM         652            
       Остров Святой Елены            SH           SHN         654            
       Сент-Китс и Невис            KN           KNA         659            
       Сент-Люсия                    LC           LCA         662            
       Сен-Мартен (французская часть) MF           MAF         663            
       Сен-Пьер и Микелон           PM           SPM         666            
       Сент-Винсент и Гренадины      VC           VCT         670            
       Самоа                          WS           WSM         882            
       Сан-Марино                     SM           SMR         674            
       Сан-Томе и Принсипе          ST           STP         678            
       Саудовская Аравия            SA           SAU         682            
       Сенегал                        SN           SEN         686            
       Сербия                         RS           SRB         688            
       Сейшелы                       SC           SYC         690            
       Сьерра-Леоне                 SL           SLE         694            
       Сингапур                      SG           SGP         702            
       Словакия                       SK           SVK         703            
       Словения                       SI           SVN         705            
       Соломоновы Острова           SB           SLB         090            
       Сомали                        SO           SOM         706            
       Южноафриканская Республика    ZA           ZAF         710            
       Южная Georgia и Южные         GS           SGS         239            
       Сандвичевы острова                                                       
       Южный Судан                    SS           SSD         728            
       Испания                        ES           ESP         724            
       Шри-Ланка                      LK           LKA         144            
       Судан                          SD           SDN         736            
       Суринам *                     SR           SUR         740            
       Свальбард и Ян-Майен          SJ           SJM         744            
       Свазиленд                     SZ           SWZ         748            
       Швеция                         SE           SWE         752            
       Швейцария                     CH           CHE         756            
       Сирийская Арабская Республика (Сирия) SY           SYR         760            
       Тайвань, Республика Китай      TW           TWN         158            
       Таджикистан                     TJ           TJK         762            
       Танзания *, Объединенная Республика TZ           TZA         834            
       Таиланд                       TH           THA         764            
       Восточный Тимор                TL           TLS         626            
       Того                           TG           TGO         768            
       Токелау                        TK           TKL         772            
       Тонга                          TO           TON         776            
       Тринидад и Тобаго            TT           TTO         780            
       Тунис                         TN           TUN         788            
       Турция                         TR           TUR         792            
       Туркменистан                   TM           TKM         795            
       Острова Тёркс и Кайкос      TC           TCA         796            
       Тувалу                         TV           TUV         798            
       Уганда                         UG           UGA         800            
       Украина                        UA           UKR         804            
       Объединенные Арабские Эмираты  AE           ARE         784            
       Соединенное Королевство        GB           GBR         826            
       Соединенные Штаты Америки     US           USA         840            
       Соединенные Штаты, мелкие     UM           UMI         581            
       удаленные острова                                                            
       Уругвай                        UY           URY         858            
       Узбекистан                     UZ           UZB         860            
       Вануату                        VU           VUT         548            
       Венесуэла (Боливарианская республика VE           VEN         862            
       )                                                                    
       Вьетнам                       VN           VNM         704            
       Виргинские острова, США       VI           VIR         850            
       Острова Уоллис и Футуна       WF           WLF         876            
       Западная Сахара               EH           ESH         732            
       Йемен                          YE           YEM         887            
       Замбия                         ZM           ZMB         894            
       Зимбабве                      ZW           ZWE         716            

   [IMG] 


   Связанные страницы:                                        

   Телефонные коды стран   Связанная информация для потребителей: 

   Коды аэропортов            

   Города мира   


   Один мир - Nations Online .:. давайте заботиться об этой планете                  

   На самом деле, невозможно имитировать свободу --- или?                      

   Проект Nations Online создан для улучшения межкультурного понимания и 
   глобальной осведомленности.                                                          
   Больше сигнала - меньше ШУМА                                                   

   Карта сайта | Информационные источники | Отказ от ответственности | Контакт:                     
   [email protected] | Copyright \A9 1998-2016 :: nationsonline.org       


   вверх

Код, который я пробовал:

cat file | awk '{print $1,$2,$3}' > результат

но вывод не чистый, так как в первом столбце есть пробелы, из-за чего содержимое теряется в следующих столбцах

Используя ту же основную идею, что и в ответе @Zanna, вы можете написать небольшой скрипт awk, который устанавливает переменную в 1, когда найдена первая строка таблицы, и возвращает к 0 для последней и печатает любые строки, прочитанные, пока флаг равен одному:

awk '/Country or/{a=1} a==1; /Zimbabwe/{a=0}' file

Скрипт выше устанавливает переменную a в 1, если текущая строка совпадает с Country or (начало таблицы), и возвращает ее к 0, если текущая строка совпадает с Zimbabwe. Действие по умолчанию, когда awk получает выражение, которое оценивается как истинное, – это напечатать строку. Поэтому a==1 само по себе вызывает печать каждой строки, прочитанной, пока a равно 1. Это происходит до проверки на Zimbabwe, так что оно также может захватить последнюю строку.

Поскольку, похоже, вы просто хотите всю таблицу и ничего лишнего, вы можете просто найти первую и последнюю строки, которые вам нужны…

sed -n '/ISO Numeric/,/Zimbabwe/p' file
  • -n ничего не печатать, пока мы не попросим об этом
  • /start/,/end/ находить строки от начала до конца
  • p печатать эти строки

Ответ или решение

Для извлечения таблицы из дампа ссылок представленного вами, существует несколько методов, в том числе использование инструментов командной строки, таких как awk и sed. В данном ответе я подробно объясню, как это сделать эффективно, чтобы избежать проблем, связанных с пробелами и форматированием.

Этапы извлечения таблицы

1. Понимание структуры данных

Перед началом работы убедитесь, что вы понимаете пределы таблицы, которую нужно извлечь. В вашем случае начало таблицы определяет строка "ISO Numeric", а конец — строка "Zimbabwe". Это важная информация, так как нам нужно будет извлечь данные только между этими двумя строками.

2. Использование sed для извлечения диапазона строк

Самый простой способ извлечения нужной таблицы — это использовать sed. Этот инструмент позволяет выбрать диапазон строк между двумя шаблонами:

sed -n '/ISO Numeric/,/Zimbabwe/p' файл.txt

Объяснение команды:

  • -n: Не выводить ничего до тех пор, пока не будет выполнена команда печати. Это позволяет избежать постороннего вывода.
  • /ISO Numeric/: Начало диапазона. Когда sed находит эту строку, он начинает выводить данные.
  • ,/Zimbabwe/p: Конец диапазона. Как только sed находит Zimbabwe, он завершает вывод данных. Команда p указывает на необходимость печати соответствующих строк.

Этот метод наиболее подходит, поскольку он гарантирует, что данные будут напечатаны в чистом виде, без лишних пробелов или отступов.

3. Использование awk для более тонкой настройки

Если вам нужно будет дополнительно обрабатывать данные (например, удалять лишние пробелы или фильтровать столбцы), awk может стать отличным выбором. Вот как можно использовать awk для достижения подобного результата:

awk '/ISO Numeric/{a=1} a==1; /Zimbabwe/{a=0}' файл.txt

Объяснение:

  • /ISO Numeric/{a=1}: Установить флаг a в 1, когда найдено начало таблицы.
  • a==1: Если флаг установлен (т.е., если мы находимся в диапазоне таблицы), напечатайте строку.
  • /Zimbabwe/{a=0}: Когда найдено слово Zimbabwe, установите флаг a в 0, чтобы остановить вывод.

Если вы хотите вывести только определенные столбцы, вы можете модифицировать команду следующим образом:

awk '/ISO Numeric/{a=1} a==1; /Zimbabwe/{a=0} {print $1,$2,$3}' файл.txt

Этот код печатает только первые три столбца каждой строки таблицы.

Заключение

Извлечение таблицы из дампа ссылок может быть выполнено с помощью различных методов, однако использование sed и awk оказалось наиболее эффективным для данной задачи. Понимание структуры данных и применения команд помогает избежать проблем с пробелами и форматированием, гарантируя, что данные будут извлечены в чистом виде. Кроме того, владение такими инструментами значительно улучшает ваши навыки обработки текстовых данных.

Оцените материал
Добавить комментарий

Капча загружается...