Como copiar e colar 10 mil vezes uma linha e gerar data e horar sequencial? [RESOLVIDO]

1. Como copiar e colar 10 mil vezes uma linha e gerar data e horar sequencial? [RESOLVIDO]

Rogerio Vieira
roncelio

(usa Outra)

Enviado em 20/03/2016 - 21:34h

Boa noite pessoal,

Precisando de uma ajudinha de vcs, onde preciso criar um script para copiar e colar 10 mil vezes a mesma linha alterando apenas a data e hora de forma que fique o horário de 1 em 1 minuto como as duas linha de exemplo.

Linha 1 <VOICE_S>,0000000001,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100,049,000,,,,,010,010,,,,,1170870001,0000000001,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;
Lina 2 <VOICE_S>,0000000002,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200,049,000,,,,,010,010,,,,,1170870001,0000000002,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;

As 10 mil linhas serão de 1 em 1 minuto conforme abaixo.
20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100
20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200
...
20160301001000,20160301010100,20160301010000,20160301010100,20160301010000,20160301010100
...
É possível fazer isso com o AWK?

Desde já agradeço a todos,


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/03/2016 - 12:56h

roncelio escreveu:

Boa Noite Marcelo,
Quase isso rss. Você colocou um controlador de tempo de 60 em 60 segundos para copiar, mas na verdade eu preciso de 10 mil linhas dessas, não me importa o tempo de copiar e colar, pode até ser um ctrl+c ctrl+v.
Eu preciso mesmo é que essas 6 datas de cada linha sejam alteradas de forma que cada linha represente 1 minuto e os dois campos sequencias.
Essas linhas vai simular um evento cada, ou seja é como se estivesse enviando um evento a cada minuto com o exemplo abaixo. Essas linhas vou gerar um arquivo com os 10 eventos e processar no meu ambiente para testes.

Ficaria assim:
20160301100100,20160301000200,20160301100100,20160301000200,20160301100100,20160301000200
20160301100200,20160301100300,20160301100200,20160301100300,20160301100200,20160301100300
20160301100300,20160301100400,20160301100300,20160301100400,20160301100300,20160301100400
20160301100400,20160301100500,20160301100400,20160301100500,20160301100400,20160301100500
20160301100500,20160301100600,20160301100500,20160301100600,20160301100500,20160301100600
20160301100600,20160301000700,20160301100600,20160301000700,20160301100600,20160301000700

E em cada linha tem um outros 02 campos que vai da linha 0000000001 até o total de linhas.
Digamos que foi 10 mil linhas, ele vai de um em um até 0000010000

Preciso seguir essa sequencia para esses 8 campos.
Observe que cada linha representa 1 minuto.
Desde já agradeço a sua atenção,

---------------------------------
Boa tarde roncelio.

De "bate pronto" e na pressa, foi a ideia que surgiu para printar a HORA Min Seg de 01 em 01 minuto . . .
Apesar de que, demoraria 166:40m para fazer as 10.000 linhas, Rsrsrsrs.
Nada como rever o código . . .

Segue:

DH="2016-03-10 10:00:00" #DATA E HORA INICIAIS
FMT="%Y%m%d%H%M00"
for ((X=1;X<=10000;X++));do
Y=$((X+1))
DATA01=$(date -d "$DH $X min" +"$FMT")
DATA02=$(date -d "$DH $Y min" +"$FMT")
printf "%010d,$DATA01,$DATA02,$DATA01,$DATA02,$DATA01,$DATA02,%010d\n" $X $X >> 10000_LINHAS.txt
done


OBSERVAÇõES:
A VAR $DH, define a DATA e HORA iniciais.
Coloquei um "CONTADOR de LINHA" (0000000001 a 0000010000) no INíCIO e outro no FIM da LINHA, se for o caso, é só trocar a posição.
Pelo seu exemplo (Ficaria assim:), entendi que há o acréscimo de 01 Min. no CAMPO DATA posterior ao acrescido de 01 minuto, como se fosse INICIO,FIM, INICIO,FIM, INICIO,FIM (isso na mesma linha)
Espero ter entendido corretamente . . . rsrsrs
Gera o arquivo 10000_LINHAS.txt
É isso...

Se resolver, marque como resolvido, por favor.
Gostando da resposta, marque-a como MELHOR, dessa forma, ganho uns pontinhos, o que incentiva a continuar colaborando, ajudando, participando e compartilhando conhecimentos . . . :)

Att.:
Marcelo Oliver







3. Re: Como copiar e colar 10 mil vezes uma linha e gerar data e horar sequencial?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 21/03/2016 - 00:12h

roncelio escreveu:

Boa noite pessoal,

Precisando de uma ajudinha de vcs, onde preciso criar um script para copiar e colar 10 mil vezes a mesma linha alterando apenas a data e hora de forma que fique o horário de 1 em 1 minuto como as duas linha de exemplo.

Linha 1 <VOICE_S>,0000000001,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100,049,000,,,,,010,010,,,,,1170870001,0000000001,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;
Linha 2 <VOICE_S>,0000000002,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200,049,000,,,,,010,010,,,,,1170870001,0000000002,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;

As 10 mil linhas serão de 1 em 1 minuto conforme abaixo.
20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100
20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200
...
20160301001000,20160301010100,20160301010000,20160301010100,20160301010000,20160301010100
...
É possível fazer isso com o AWK?
Desde já agradeço a todos,

-----------------------------------------------
Boa noite roncelio.
Montei a solução com o printf, segue:

for ((X=1;X<=10000;X++));do
sleep 60
printf "<VOICE_S>,%010d,RPM,118,,0,$(printf "%(%Y%m%d%H%M%S)T,"),,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200,049,000,,,,,010,010,,,,,1170870001,0000000002,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;\n" $X
done

OBS.: Analisando o seu exemplo (linha01 e linha02), entendi que o campo 01, também é alterado, é tipo um contador . . . É isso?
A DATA, entendi que é o CAMPO 07, onde deve ser alterado a cada 1 minuto . . .
Apesar de que, existem + 06 campos com o formado de YYYYMMDDHHMMSS.
Esses entre => <= na saída do comando abaixo:
sed 's/\([0-9]\{14\}\)/\n=>&<=\n/g' <<< "<VOICE_S>,0000000001,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100,049,000,,,,,010,010,,,,,1170870001,0000000001,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;" 


Se resolver, marque como resolvido, por favor.
Gostando da resposta, marque-a como MELHOR, dessa forma, ganho uns pontinhos, o que incentiva a continuar colaborando/ajudando/participando/compartilhando . . . :)

Att.:
Marcelo





4. Re: Como copiar e colar 10 mil vezes uma linha e gerar data e horar sequencial? [RESOLVIDO]

Rogerio Vieira
roncelio

(usa Outra)

Enviado em 21/03/2016 - 23:02h

msoliver escreveu:

roncelio escreveu:

Boa noite pessoal,

Precisando de uma ajudinha de vcs, onde preciso criar um script para copiar e colar 10 mil vezes a mesma linha alterando apenas a data e hora de forma que fique o horário de 1 em 1 minuto como as duas linha de exemplo.

Linha 1 <VOICE_S>,0000000001,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100,049,000,,,,,010,010,,,,,1170870001,0000000001,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;
Linha 2 <VOICE_S>,0000000002,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200,049,000,,,,,010,010,,,,,1170870001,0000000002,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;

As 10 mil linhas serão de 1 em 1 minuto conforme abaixo.
20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100
20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200
...
20160301001000,20160301010100,20160301010000,20160301010100,20160301010000,20160301010100
...
É possível fazer isso com o AWK?
Desde já agradeço a todos,

-----------------------------------------------
Boa noite roncelio.
Montei a solução com o printf, segue:

for ((X=1;X<=10000;X++));do
sleep 60
printf "<VOICE_S>,%010d,RPM,118,,0,$(printf "%(%Y%m%d%H%M%S)T,"),,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000100,20160301000200,20160301000100,20160301000200,20160301000100,20160301000200,049,000,,,,,010,010,,,,,1170870001,0000000002,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;\n" $X
done

OBS.: Analisando o seu exemplo (linha01 e linha02), entendi que o campo 01, também é alterado, é tipo um contador . . . É isso?
A DATA, entendi que é o CAMPO 07, onde deve ser alterado a cada 1 minuto . . .
Apesar de que, existem + 06 campos com o formado de YYYYMMDDHHMMSS.
Esses entre => <= na saída do comando abaixo:
sed 's/\([0-9]\{14\}\)/\n=>&<=\n/g' <<< "<VOICE_S>,0000000001,RPM,118,,0,20160320210134,,,,1170870000,,1,1170870001,1170870000,N,0,1170870001,,0,1,,,0,,20160301000000,20160301000100,20160301000000,20160301000100,20160301000000,20160301000100,049,000,,,,,010,010,,,,,1170870001,0000000001,000004240,,,,,,,,,,,<LNP_S>,010,010,010,11000,11000,11000,1,1,1,<LNP_E>,<VOICE_E>;" 


Se resolver, marque como resolvido, por favor.
Gostando da resposta, marque-a como MELHOR, dessa forma, ganho uns pontinhos, o que incentiva a continuar colaborando/ajudando/participando/compartilhando . . . :)

Att.:
Marcelo




Boa Noite Marcelo,

Quase isso rss. Você colocou um controlador de tempo de 60 em 60 segundos para copiar, mas na verdade eu preciso de 10 mil linhas dessas, não me importa o tempo de copiar e colar, pode até ser um ctrl+c ctrl+v. Eu preciso mesmo é que essas 6 datas de cada linha sejam alteradas de forma que cada linha represente 1 minuto e os dois campos sequencias. Essas linhas vai simular um evento cada, ou seja é como se estivesse enviando um evento a cada minuto com o exemplo abaixo. Essas linhas vou gerar um arquivo com os 10 eventos e processar no meu ambiente para testes.

Ficaria assim:
20160301100100,20160301000200,20160301100100,20160301000200,20160301100100,20160301000200
20160301100200,20160301100300,20160301100200,20160301100300,20160301100200,20160301100300
20160301100300,20160301100400,20160301100300,20160301100400,20160301100300,20160301100400
20160301100400,20160301100500,20160301100400,20160301100500,20160301100400,20160301100500
20160301100500,20160301100600,20160301100500,20160301100600,20160301100500,20160301100600
20160301100600,20160301000700,20160301100600,20160301000700,20160301100600,20160301000700

E em cada linha tem um outros 02 campos que vai da linha 0000000001 até o total de linhas. Digamos que foi 10 mil linhas, ele vai de um em um até 0000010000

Preciso seguir essa sequencia para esses 8 campos. Observe que cada linha representa 1 minuto.

Desde já agradeço a sua atenção,


5. Re: Como copiar e colar 10 mil vezes uma linha e gerar data e horar sequencial? [RESOLVIDO]

Rogerio Vieira
roncelio

(usa Outra)

Enviado em 22/03/2016 - 22:34h

msoliver escreveu:

roncelio escreveu:

Boa Noite Marcelo,
Quase isso rss. Você colocou um controlador de tempo de 60 em 60 segundos para copiar, mas na verdade eu preciso de 10 mil linhas dessas, não me importa o tempo de copiar e colar, pode até ser um ctrl+c ctrl+v.
Eu preciso mesmo é que essas 6 datas de cada linha sejam alteradas de forma que cada linha represente 1 minuto e os dois campos sequencias.
Essas linhas vai simular um evento cada, ou seja é como se estivesse enviando um evento a cada minuto com o exemplo abaixo. Essas linhas vou gerar um arquivo com os 10 eventos e processar no meu ambiente para testes.

Ficaria assim:
20160301100100,20160301000200,20160301100100,20160301000200,20160301100100,20160301000200
20160301100200,20160301100300,20160301100200,20160301100300,20160301100200,20160301100300
20160301100300,20160301100400,20160301100300,20160301100400,20160301100300,20160301100400
20160301100400,20160301100500,20160301100400,20160301100500,20160301100400,20160301100500
20160301100500,20160301100600,20160301100500,20160301100600,20160301100500,20160301100600
20160301100600,20160301000700,20160301100600,20160301000700,20160301100600,20160301000700

E em cada linha tem um outros 02 campos que vai da linha 0000000001 até o total de linhas.
Digamos que foi 10 mil linhas, ele vai de um em um até 0000010000

Preciso seguir essa sequencia para esses 8 campos.
Observe que cada linha representa 1 minuto.
Desde já agradeço a sua atenção,

---------------------------------
Boa tarde roncelio.

De "bate pronto" e na pressa, foi a ideia que surgiu para printar a HORA Min Seg de 01 em 01 minuto . . .
Apesar de que, demoraria 166:40m para fazer as 10.000 linhas, Rsrsrsrs.
Nada como rever o código . . .

Segue:

DH="2016-03-10 10:00:00" #DATA E HORA INICIAIS
FMT="%Y%m%d%H%M00"
for ((X=1;X<=10000;X++));do
Y=$((X+1))
DATA01=$(date -d "$DH $X min" +"$FMT")
DATA02=$(date -d "$DH $Y min" +"$FMT")
printf "%010d,$DATA01,$DATA02,$DATA01,$DATA02,$DATA01,$DATA02,%010d\n" $X $X >> 10000_LINHAS.txt
done


OBSERVAÇõES:
A VAR $DH, define a DATA e HORA iniciais.
Coloquei um "CONTADOR de LINHA" (0000000001 a 0000010000) no INíCIO e outro no FIM da LINHA, se for o caso, é só trocar a posição.
Pelo seu exemplo (Ficaria assim:), entendi que há o acréscimo de 01 Min. no CAMPO DATA posterior ao acrescido de 01 minuto, como se fosse INICIO,FIM, INICIO,FIM, INICIO,FIM (isso na mesma linha)
Espero ter entendido corretamente . . . rsrsrs
Gera o arquivo 10000_LINHAS.txt
É isso...

Se resolver, marque como resolvido, por favor.
Gostando da resposta, marque-a como MELHOR, dessa forma, ganho uns pontinhos, o que incentiva a continuar colaborando, ajudando, participando e compartilhando conhecimentos . . . :)

Att.:
Marcelo Oliver







Boa noite Marcelo,

Na lata rsrsr entendeu e resolveu do jeito que queria apesar da performance.

Meu muito obrigado e tudo de bom.

Grande abraço e sucesso.

Resolvido e marcado como melhor resposta.



6. Re: Como copiar e colar 10 mil vezes uma linha e gerar data e horar sequencial? [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/03/2016 - 10:05h

roncelio escreveu:
Boa noite Marcelo,
Na lata rsrsr, entendeu e resolveu do jeito que queria, apesar da performance.
Meu muito obrigado e tudo de bom.
Grande abraço e sucesso.
Resolvido e marcado como melhor resposta.

--------------------------------------------------------------------------------------------------
Bom dia Roncelio.
Finalmente consegui entender . . . :)
Por falar em performance . . . Esta demorando muito??? Qto tempo?
Dei outra analisada no código, não encontrei uma maneira de deixar mais rápido . . .
Consegui diminuir "1.728" segundos . . . Eliminando os CAMPOS REPETIDOS (de 04 a 08).

Veja:
IMPRIMINDO 03 CAMPOS:
time ./10000-LINHAS.sh 

real 0m19.625s
user 0m1.204s
sys 0m2.192s

IMPRIMINDO 08 CAMPOS:
time ./10000-LINHAS.sh 

real 0m21.353s
user 0m1.324s
sys 0m2.416s


EDITADO EM 24/03/2016 as 11:45:00
Bom dia Roncelio.
Até ontem, desconhecia o uso das funções strftime e mktime no awk . . .
Agora o tempo de execução baixou muito!!! :)
Veja:

DT=$(date -d "2016-03-10 10:00:00" +%s)
awk 'BEGIN {t='$DT';for(i=1;i<=10000;i++) printf "%010d:%s:%s\n" ,i,strftime("%Y%m%d%H%M%S", t+60*i),strftime("%Y%m%d%H%M%S", t+60*i+60)}' >> 10000_LINHAS.txt

OBS.: Substitui mktime por $DT, para diminuir o COMANDO.

Att.:
Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts