você está aqui: Home  → Arquivo de Mensagens

Removendo e inserindo dados em um arquivo com awk

Colaboração: Wander Barbato

Data de Publicação: 13 de Novembro de 2009

Recentemente eu recebi um arquivo de um fornecedor de software que continha uma listagem com números de série de softwares a serem atribuídos aos nossos usuários. Eu queria criar uma listagem contendo apenas estes números de série (removendo as demais informações que para mim eram desnecessárias) e acrescentar um campo para conter o nome e a assinatura dos usuários responsáveis pelo respectivo número de série atribuído.

O formato do arquivo original (antigo.txt) era o seguinte:

  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
  <Key ID="45" Type="AAA" ClaimedDate="2009/11/05">XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>

Com a diferença que havia centenas de linhas...

Lembrei-me do comando awk e este resolveu o meu problema de imediato. A sintaxe utilizada foi:

  awk -F">" '{print $2}' antigo.txt | \
  awk -F"<" '{print NR " - "$1 " - Nome e assinatura:__________________________________"}' > novo.txt

O formato do arquivo gerado (novo.txt) ficou assim:

  1 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  2 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  3 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  4 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  5 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  6 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  7 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  8 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  9 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________
  10 - XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - Nome e assinatura:__________________________________

Explicando:

A opção -F do awk indica o "field-separator", ou seja, qual caractere indica separação entre diferentes campos de uma linha. Como não havia colunas separadas corretamente com espaços e/ou tabulação, utilizei esta opção para dividir a linha do arquivo em 2 campos:

  • 1º campo: <Key ID="45" Type="AAA" ClaimedDate="2009/11/05"
  • 2º campo: XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>

A saída deste comando foi direcionada para um novo processamento de awk que novamente dividiu a linha em 2 campos, ecoou apenas o número de série e acrescentou o número da linha (NR) antes e uma descrição

  Nome e assinatura:__________________________________ 

em seguida.


Yahoo! doa seu Traffic Server à Fundação Apache

Fonte: Notícias Linux

O Yahoo! decidiu publicar o código do Traffic Server, uma plataforma que eles mesmos desenvolveram para gerenciar o tráfego de seu webmail e outros serviços web. Entre outras coisas, a plataforma se encarrega do caching, processamento e balanceamento de carga no Yahoo!, além disso é utilizado para gerenciar o tráfego nos serviços de virtualização de armazenamento interno do Yahoo!.

Saiba Mais:



 

 

Veja a relação completa dos artigos de Wander Barbato

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script