Adicione colunas a um arquivo de texto com espaçamento definido no Bash

1

Estou configurando um arquivo de zona de malware no DNS que apontará todos os hosts para um IP específico. O arquivo é simplesmente uma lista de nomes de host. Isso é o que eu tenho agora:

googlle.in                               
greensny.com                  
hoefra.at                    
hotel-sas.ru      

Isto é o que eu preciso para parecer:

googlle.in                IN           A          192.168.100.10                      
greensny.com              IN           A          192.168.100.10     
hoefra.at                 IN           A          192.168.100.10   
hotel-sas.ru              IN           A          192.168.100.10 

Consegui lançar algo com o sed:

sed -i 's/$/                     IN          A           192.168.155.128/' db.malware-host-only

O que funciona, no entanto, é assim:

vururyuzeifadesi.net   IN          A           192.168.155.128
waseemamrohi.com   IN          A           192.168.155.128
weblab-srv.biz  IN          A           192.168.155.128
weghost.ru   IN          A           192.168.155.128
wnctnr.com   IN          A           192.168.155.128

Como posso limpá-lo e ter espaçamento igual entre as colunas para que o "IN" comece em um ponto específico com o "A" e as colunas de endereço IP também sendo iguais à distância?

    
por user53029 29.01.2016 / 16:32

2 respostas

1
awk '{ printf "%-30s%10s%10s%20s\n",$1,"IN","A","192.168.100.10"; }' file
    
por 29.01.2016 / 16:38
4

Basta enviar a saída para column -t :

sed 's/$/ IN A 192.168.155.128/' db.malware-host-only | column -t > tmp
mv tmp db.malware-host-only

Você pode usar o parâmetro -o para estender os espaços entre as colunas:

column -t -o '      '

Você não pode usar sed -i com isso, então envie para um arquivo temporário e renomeie-o para o nome original.

    
por 29.01.2016 / 16:41