Ir para conteúdo
Fórum Script Brasil

lgfcosta

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre lgfcosta

lgfcosta's Achievements

0

Reputação

  1. 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.
×
×
  • Criar Novo...