awk '{ printf "%-30s%10s%10s%20s\n",$1,"IN","A","192.168.100.10"; }' file
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?
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.
Tags bash text-processing awk sed