Como posso substituir linhas contendo apenas o número '0' com linhas em branco usando o AWK?

0

Estou procurando um comando que substitua as linhas contendo SOMENTE número 0 em suas colunas, com linhas 'em branco'.

por exemplo. Eu tenho abaixo entrada:

Taj_Mahal                                             Agra                       
                                                        0                             
                                                        0               
Chichen_Itza                                          Yucatán              
                                                        0                             
                                                        0               
Christ_the_Redeemer                                   Rio_de_Janeiro              
                                                        0                             
                                                        0               
Colosseum                                             Rome                 
                                                        0                             
                                                        0               
Great_Wall_of_China                                   China                      
                                                        0                             
                                                        0               
Machu_Picchu                                          Cuzco_Region                     
                                                        0                             
                                                        0               
Petra                                                 Ma'an_Governorate                   
                                                        0                             
                                                        0               
Great_Pyramid_of_Giza                                 Egypt                   
                                                        0                             
                                                        0               

Abaixo deve estar a saída:

Taj_Mahal                                             Agra                       


Chichen_Itza                                          Yucatán              


Christ_the_Redeemer                                   Rio_de_Janeiro              


Colosseum                                             Rome                 


Great_Wall_of_China                                   China                      


Machu_Picchu                                          Cuzco_Region                     


Petra                                                 Ma'an_Governorate                   


Great_Pyramid_of_Giza                                 Egypt                   
    
por user157638 22.02.2016 / 23:45

1 resposta

2

Depois de editar sua postagem, parece que as linhas na sua entrada de exemplo não contêm "ONLY" o zero. Eles contêm muitos espaços e um zero. Se este for o caso, com awk:

awk 'NF==1 && $1=="0" { $0="" } { print }'

$ 0 refere-se a toda a linha. NF refere-se ao número de campos. $ 1 refere-se ao primeiro campo. Por padrão, o awk retira os espaços iniciais / finais.

Como alternativa, usando a correspondência de expressão regular:

 awk '/^ *0 *$/ { $0="" } { print }'

A solução poderia ser mais sucinta (e enigmática) substituindo { print } por 1 , mas, mesmo assim, sed ainda seria mais conciso:

sed 's/^ *0 *$//'

Observe que a primeira sugestão do awk ignora os espaços em branco iniciais e finais (que podem incluir tabulações e outros caracteres dependentes do código do idioma). A segunda aproximação do awk e do sed apenas ignora os espaços iniciais / finais.

    
por 22.02.2016 / 23:58