Inserir linha [RESOLVIDO]

1. Inserir linha [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 18/12/2015 - 13:27h

Olá pessoal,
Tenho que inserir um linha a cada mudança de data em um determinado arquivo, mas estou meio perdido como fazer isso. Procurei no cut, sed e awk, mas fiquei meio perdido.
O arquivo é +- assim:
(179.197.105.188) - DATA: 15/12/15 - HORA: 17:23:31
(186.244.143.203) - DATA: 16/12/15 - HORA: 07:57:06
(186.244.80.62) - DATA: 16/12/15 - HORA: 08:26:07
(189.107.15.191) - DATA: 16/12/15 - HORA: 11:42:07
(189.48.1.118) - DATA: 16/12/15 - HORA: 14:32:07
(189.12.246.153) - DATA: 17/12/15 - HORA: 08:36:07
(186.244.86.115) - DATA: 17/12/15 - HORA: 09:54:06
(200.97.198.215) - DATA: 18/12/15 - HORA: 07:36:07

E terá de ficar assim:
(179.197.105.188) - DATA: 15/12/15 - HORA: 17:23:31

(186.244.143.203) - DATA: 16/12/15 - HORA: 07:57:06
(186.244.80.62) - DATA: 16/12/15 - HORA: 08:26:07
(189.107.15.191) - DATA: 16/12/15 - HORA: 11:42:07
(189.48.1.118) - DATA: 16/12/15 - HORA: 14:32:07

(189.12.246.153) - DATA: 17/12/15 - HORA: 08:36:07
(186.244.86.115) - DATA: 17/12/15 - HORA: 09:54:06

(200.97.198.215) - DATA: 18/12/15 - HORA: 07:36:07

Agradeço ajuda.

Obrigado.

Geraldo.


  


2. MELHOR RESPOSTA

Renan Arantes
R3nan

(usa Debian)

Enviado em 22/12/2015 - 11:23h

fica assim:

#!/bin/bash
arquivo=/ip/empresa/log_ip_empresa
data=$(cat $arquivo | awk -F"/" '{print $1}' | awk '{print $4}' | uniq)
for i in $data; do
cat $arquivo | awk '{print $4" "$0}' | grep ^$i | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}' >> novo_arquivo.txt
echo "" >> novo_arquivo.txt
done


ok? se foi útil marque o topico como resolvido e selecione a melhor resposta pra eu ganhar ums pontinhos hhehehe

3. RES: Inserir linha

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 18/12/2015 - 14:48h

Olá,
sem ver o script fica meio complicado de ajudar pois não sabemos como você está fazendo a saída
ja tentou echo -e " $conteudo \n"
\n dentro do echo -e faz uma quebra de linha do modo do seu exemplo:



---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---


4. Re: Inserir linha [RESOLVIDO]

Renan Arantes
R3nan

(usa Debian)

Enviado em 18/12/2015 - 16:41h

salve, segue o script, salve o mesmo com o nome de sua preferencia de permissão de execução e rode, substitua o arq.txt pelo nome do seu arquivo


chmod +x script.sh
./script.sh arq.txt > arqNovo.txt



#!/bin/bash
arquivo=$1
data=$(cat $arquivo | awk -F"/" '{print $1}' | awk '{print $4}' | uniq)
for i in $data; do
cat $arquivo | awk '{print $4" "$0}' | grep ^$i | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'
echo ""
done




5. Re: Inserir linha [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 22/12/2015 - 08:24h

R3nan, usando seu script com pequenas mudanças eu consigo listar em tela o resultado desejado.
Usando o script na linha de comando com a extensão "< nome do arquivo" também funciona legal e ele cria o arquivo, mas como eu faço para que o script crie o arquivo já que esse script será acionado por um outro script?

Segue o seu script alterado e funcionando na tela:
#!/bin/bash
arquivo=/ip/empresa/log_ip_empresa
data=$(cat $arquivo | awk -F"/" '{print $1}' | awk '{print $4}' | uniq)
for i in $data; do
cat $arquivo | awk '{print $4" "$0}' | grep ^$i
echo ""

done

Tentei criar o arquivo da seguinte forma, mas não deu: cat $arquivo | awk '{print $4" "$0}' | grep ^$i > nome do arquivo.

Agradeço ajuda.

Geraldo.







6. Re: Inserir linha [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 22/12/2015 - 11:30h

R3nan..
100%, muito obrigado.

Feliz Natal e um Ano Novo cheio de boas realizações.

Geraldo.


7. Re: Inserir linha [RESOLVIDO]

Renan Arantes
R3nan

(usa Debian)

Enviado em 22/12/2015 - 11:31h

vlw pra vc tb! precisando estamos ai... abraço






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts