Listando conteúdo de um arquivo sem repetição usando cat + sed + sort

Setembro 2, 2009

Hoje precisei fazer um parse em um arquivo de configuração de um script de backup de bases de dados MySQL. O arquivo tem os dados de acesso de vários bancos, organizados por linha e estruturado da seguinte forma:

servidor porta banco usuario senha

O objetivo de fazer o parse nesse arquivo era de recuperar as duas primeiras colunas (servidor e porta) para formar o path de onde os arquivos sql estão armazenados, já que o dump é feito de acordo com o servidor, instância (porta) e período (mês-ano). Um caminho válido seria:
/media/servidor.com.br/3306/09-2009.

Meu problema é que existem várias entradas para a mesma instância do MySQL (Servidor/Porta) e precisava de um lista sem duplicidade, como num SELECT DISTINCT.
Para resolver o problema basta usar a linha de comando:

cat arquivo | sed -e 's/\(.*\) \(.*\) \(.*\) \(.*\) \(.*\)/\1\/\2/' | sort -u

Mas o que diabos isso ai faz? De uma forma bem resumida, o comando acima realiza a leitura do arquivo e passa a saída via pipe para o sed. O sed por sua vez, divide os dados em cinco colunas (cada \(.*\) representa uma coluna) e retorna como saída apenas as duas primeiras (servidor e porta no sed é o trecho /\1\/\2/) e passa o resultado para o comando sort. O sort é que faz a “mágica” do DISTINCT, sort -u exibe apenas as linhas únicas :p

Problema resolvido, mais uma batalha vencida :D

Abrasss

Entry Filed under: Linux. Tags: , , , , , , , , , , , , , .

2 Comments Add your own

  • 1. Dagoberto  |  Setembro 13, 2009 at 7:49 pm

    Blz, cara, justamente o que eu precisava.

    Bom Trabalho!

    Responder
    • 2. Fernando Libório  |  Setembro 15, 2009 at 3:43 pm

      Vlw Dagoberto

      Responder

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


 

Setembro 2009
S T Q Q S S D
« Ago   Out »
 123456
78910111213
14151617181920
21222324252627
282930  

Arquivos

Tópicos recentes

Tags

Addfont apache Aplicações audio bash Carreira desabilitado desativado Desktop diminuir Documento emprego Encoding Firefox FPDF Gerenciador Google GTK+ HDA iconv iReport Jasper jasperserver Java Linux MakeFont mudo mysql Partição PDF Perl PHP postgres procedure redimensionar Relatorio script shell shrink SLACKWARE som ttf2pt1 vaga Vista Windows

Categorias

Blogroll