Ubuntu 16.04
GNU bash, versão 4.4.0
Eu gostaria de formatar este arquivo de texto arquivado com códigos postais contendo 1.264.524 linhas.
#!/bin/bash
wget http://download.geonames.org/export/zip/allCountries.zip
unzip allCountries.zip
mv -f allCountries.txt .allCountries.txt
rm -f allCountries.zip
Esta é uma seção do arquivo não formatada.
AD AD100 Canillo 42.5833 1.6667 6
AD AD200 Encamp 42.5333 1.6333 6
AD AD300 Ordino 42.6 1.55 6
AD AD400 La Massana 42.5667 1.4833 6
AD AD500 Andorra la Vella 42.5 1.5 6
AD AD600 Sant Julià de Lòria 42.4667 1.5 6
AD AD700 Escaldes-Engordany 42.5 1.5667 6
AR 3636 POZO CERCADO (EL CHORRO (F), DPTO. RIVADAVIA (S)) Salta A -23.4933 -61.9267 3
AR 4123 LAS SALADAS Salta A -25.7833 -64.5 4
AR 4126 BARADERO Salta A -26.0833 -65.263 3
AR 4126 EL CUIBAL Salta A -26.0833 -65.263 3
AR 4126 LA ASUNCION Salta A -26.0833 -65.263 3
AR 4126 MIRAFLORES (TALA, DPTO. CANDELARIA) Salta A -26.0833 -65.263 3
AR 4141 TOLOMBON Salta A -26.2 -65.9167 4
AR 4141 QUISCA GRANDE Salta A -26.4367 -65.97 3
AR 4141 LA CIENEGUITA Salta A -26.4367 -65.97 3
AR 4141 MACHO RASTROJO Salta A -26.4367 -65.97 3
AR 4190 ROSARIO DE LA FRONTERA Salta A -25.8 -64.9667 4
AR 4190 OVANDO Salta A -25.8 -65.1 4
AR 4190 SAN ESTEBAN Salta A -25.8 -65.0333 3
AR 4190 LA BANDA (R. DE LA FRONTERA, DPTO. ROSARIO DE LA FRONTERA) Salta A -25.8 -65.0333 3
AR 4190 LA MATILDE Salta A -25.8 -65.0333 3
AR 4190 LAS PIEDRITAS Salta A -25.8 -65.0333 3
AR 4190 LOS POCITOS Salta A -25.8 -65.0333 3
AR 4190 OJO DE AGUA (ROSARIO DE LA FRONTERA, DPTO. R.DE LA FRONTERA) Salta A -25.8 -65.0333 3
AR 4190 POTRERILLO (R. DE LA FRONTERA, DPTO. ROSARIO DE LA FRONTERA) Salta A -25.8 -65.0333 3
Este deve ser o resultado final:
AD AD100 Canillo 42.5833 1.6667 6
AD AD200 Encamp 42.5333 1.6333 6
AD AD300 Ordino 42.6 1.56 6
AD AD400 La Massana 42.5667 1.4833 6
AD AD500 Andorra la Vella 42.5 1.6 6
AD AD600 Sant Julià de Lòria 42.4667 1.5 6
AD AD700 Escaldes-Engordany 42.5 1.5667 6
AR 3636 POZO CERCADO (EL CHORRO (F), DPTO. RIVADAVIA (S)) Salta A -23.4933 -61.9267 3
AR 4123 LAS SALADAS Salta A -25.7833 -64.5 4
AR 4126 BARADERO Salta A -26.0833 -65.263 3
AR 4126 EL CUIBAL Salta A -26.0833 -65.263 3
AR 4126 LA ASUNCION Salta A -26.0833 -65.263 3
AR 4126 MIRAFLORES (TALA, DPTO. CANDELARIA) Salta A -26.0833 -65.263 3
AR 4141 TOLOMBON Salta A -26.2 -65.9167 4
AR 4190 OJO DE AGUA (ROSARIO DE LA FRONTERA, DPTO. R.DE LA FRONTERA) Salta A -25.8 -65.0333 3
AR 4190 POTRERILLO (R. DE LA FRONTERA, DPTO. ROSARIO DE LA FRONTERA) Salta A -25.8 -65.0333 3
Portanto, a 30ª guia ou 88 espaços da esquerda da terceira para a última coluna deve começar. O primeiro caractere nas últimas 3 colunas tem 12 espaços de intervalo.
Cada linha tem dados, por isso tentei cortar as últimas 3 colunas em outro arquivo. Então tentei remover todos os espaços em branco do arquivo original e formatá-lo em colunas. A terceira coluna me causa problemas porque se
awk 'BEGIN{ OFS="\t"}{ print $1, $2, NR }' .allCountries.txt
AT 4873 Pehigen 34069
AT 4873 Hofberg 34070
AT 4873 Wiederhals 34071
AT 4873 Oberedt 34072
AT 4873 Oberegg 34073
AT 4873 Raitenberg 34074
AT 4873 Redltal 34075
AT 4873 Friedhalbing 34076
AT 4873 Unterhaselbach 34077
AT 4873 Redltal 34078
AT 4873 Erkaburgen 34079
AT 4873 Mayrhof 34080
AT 4873 Erdpries 34081
AT 4873 Grünbergsiedlung 34082
AT 4873 Brunnhölzl 34083
AT 4873 Seibrigen 34084
AT 4873 Kinast 34085
AT 4873 Stöckert 34086
AT 4873 Frankenburg 34087
AT 4873 Fischeredt 34088
AT 4873 Marigen 34089
AT 4873 Oberhaselbach 34090
AT 4873 Ottokönigen 34091
AT 4873 Fischigen 34092
AT 4873 Endriegl 34093
Qualquer ajuda seria grande.