Ir para conteúdo
Fórum Script Brasil
  • 0

MANIPULAR ARQUIVO TEXTO E PARA GERAR COMANDOS SED.


lgfcosta

Pergunta

Olá pessoal, alguém consegue ajudar?

Tenho um arquivo texto com o seguinte conteúdo (formado com 3 colunas): 1ª coluna é um caminho para um arquivo, a 2ª coluna é o nº da linha dentro do arquivo e a 3ª o conteúdo da linha.

Se o nome do arquivo se repetir, ou seja, se ele tiver mais de uma ocorrência, está em sequência e o número da linha sempre da menor para a maior.

Exemplo:

/tmp/teste1/arq1.conf:99:string 3
/tmp/teste2/arq1.conf:103:string 1
/tmp/teste2/arq1.conf:122:string qualquer
/tmp/teste2/arq1.conf:115:abracadabra teste
/tmp/teste3/arq1.conf:106:abcde
/tmp/teste3/arq1.conf:155:ola mundo
/tmp/teste4/arq1.conf:60:string qualquer 2
/tmp/teste5/arq1.conf:10:ola mundo

Reparem que podem ter mais de uma linha para o mesmo arquivo e este arquivo é gerado dinamicamente.

A partir dele, preciso gerar uma saída contendo comandos sed de alteração em cada arquivo desta lista da seguinte forma:
Se o nome do arquivo tiver somente uma ocorrência (ex. /tmp/teste1/arq1.conf, /tmp/teste4/arq1.conf e /tmp/teste5/arq1.conf) ou várias ocorrências mas sendo a última, gerar o sed para substituir o conteúdo da linha por uma string pré-definida.
Se o arquivo tiver mais ocorrência mas NÃO é a última na sequência, gerar o sed para remover a linha e este comando deve estar depois dos comandos de substituição.

Digamos que se a string de substituição for xpto, a saída deveria ser igual a:

sed -i "99s/.*/xpto/g" /tmp/teste1/arq1.conf
sed -i "115s/.*/xpto/g" /tmp/teste2/arq1.conf
sed -i "103d" /tmp/teste2/arq1.conf
sed -i "122d" /tmp/teste2/arq1.conf
sed -i "155s/.*/xpto/g" /tmp/teste3/arq1.conf
sed -i "106d" /tmp/teste3/arq1.conf
sed -i "60s/.*/xpto/g" /tmp/teste4/arq1.conf
sed -i "10s/.*/xpto/g" /tmp/teste5/arq1.conf

De preferência, se for através de awk (ou sed se possível) seria melhor ainda porque não queria loops for / while.
 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...