Enviado em 16/04/2020 - 01:03h
Eu tenho dois arquivos .txt e gostaria de juntar os dois e colocar em um só. Os meus dados são assim:Enviado em 19/04/2020 - 23:59h
{ if(FILENAME=="arq1.txt"){cp1[$1]=$1;cp2[$1]=$2;cp3[$1]=$3;cp4[$1]=$4;} if(FILENAME=="arq2.txt" && ($1==cp1[$1] && $2==cp2[$1] && $3==cp3[$1]) ) printf "%s %s %d %s %s\n" ,cp1[$1],cp2[$1],cp3[$1],cp4[$1],$4 }
awk -f mescla.awk arq1.txt arq2.txt Saída: 1 1 1998 32.5 28.2 2 1 1998 37.2 35.2
{ if(FILENAME=="arq1.txt"){cp1[$1]=$1;cp2[$1]=$2;cp3[$1]=$3;cp4[$1]=$4;cp5[$1]=$5;} if(FILENAME=="arq2.txt" && ($1==cp1[$1] && $2==cp2[$1] && $3==cp3[$1] && $4==cp4[$1])) printf "%s %s %s %d %s %s\n",cp1[$1],cp2[$1],cp3[$1],cp4[$1],cp5[$1],$5 }
0 15 6 2014 0.6 1 15 6 2014 0.4 2 15 6 2014 1.19 3 15 6 2014 0.2 4 15 6 2014 0.2 5 15 6 2014 0.4 6 15 6 2014 0.4 7 15 6 2014 0.2 8 15 6 2014 0.2 9 15 6 2014 NaN 10 15 6 2014 NaN 11 15 6 2014 NaN
awk -i inplace -v INPLACE_SUFFIX=.bak '{Uts=mktime($4" "$3" "$2" "$1" "00" "00);printf "%s %02d %02d %02d %s %s\n" ,Uts,$1,$2,$3,$4,$5}' arquivo1.txt arquivo2.txt 2º Passo salve o mescla cat mescla.awk BEGIN{FS=" ";printf "H D M Ano Vlr_1 Vlr_2\n";} { if(FILENAME == "arquivo1.txt"){data_01[$1]=$1;valor_01[$1]=$6;} if(FILENAME == "arquivo2.txt") if($1 == data_01[$1] && $6 != "NaN" && valor_01[$1] != "NaN") printf "%s %s %s %s %s %s\n" ,$2,$3,$4,$5,$6,valor_01[$1]; #else print $2,$3,$4,$5,$6,valor_01[$1],"NÃO CASOU!!" } 3 passo, execute: awk -f mescla.awk arquivo1.txt arquivo2.txt|column -t Resultado: H D M Ano Vlr_1 Vlr_2 Status 14 06 06 2014 1.364228 0.39 Okay! 18 14 06 2014 0.247516 0.2 Okay! 20 14 06 2014 5.097166 6.5 Okay! 23 14 06 2014 1.676368 0.4 Okay! 00 15 06 2014 5.551308 0.6 Okay! 01 15 06 2014 1.951 0.4 Okay! 02 15 06 2014 0.532686 1.19 Okay! 03 15 06 2014 1.3404 0.2 Okay! 04 15 06 2014 8.60231 0.2 Okay! 05 15 06 2014 8.139638 0.4 Okay! 06 15 06 2014 1.22334 0.4 Okay! 07 15 06 2014 0.439229 0.2 Okay! 08 15 06 2014 0.386959 0.2 Okay! 12 15 06 2014 0.16528 0.2 Okay! 13 15 06 2014 1.969192 0.2 Okay! 08 23 06 2014 0.474899 0.2 Okay! 19 26 06 2014 0.025491 0.39 Okay! 02 27 06 2014 0.548529 3.74 Okay! 07 27 06 2014 0.496584 0.2 Okay! 17 29 06 2014 0.073492 1.18 Okay!
Enviado em 16/04/2020 - 03:56h
Os arquivos estão preordenados, e ambos ordenados com o mesmo citério? Se estiverem, é melhor, porque isso lhe permitirá percorrer os dois simultaneamente.arquivos arq1, arq2 variáveis fim_arq1, dia1, mês1, ano1, valor1, data1 variáveis fim_arq2, dia2, mês2, ano2, valor2, data2 abre arq1 para leitura fim_arq1 recebe falso abre arq2 para leitura fim_arq2 recebe falso lê (dia1, mês1, ano1, valor1) de arq1 se leitura falhou, fim_arq1 recebe verdadeiro lê (dia2, mês2, ano2, valor2) de arq2 se leitura falhou, fim_arq2 recebe verdadeiro enquanto fim_arq1 = falso ou fim_arq2 = falso, se fim_arq1 = falso, data1 recebe formatação("YYYYmmdd", dia1, mês1, ano1) se fim_arq2 = falso, data2 recebe formatação("YYYYmmdd", dia2, mês2, ano2) se (fim_arq1 = falso) e ((fim_arq2 = verdadeiro) ou (data1 < data2)), imprime dia1, mes1, ano1, valor1, NaN lê (dia1, mês1, ano1, valor1) de arq1 se leitura falhou, fim_arq1 receber verdadeiro senão, se (fim_arq2 = falso) e ((fim_arq2 = verdadeiro) ou (data1 > data2)), imprime dia2, mês2, ano2, NaN, valor2 lê (dia2, mês2, ano2, valor2) de arq2 se leitura falhou, fim_arq2 recebe verdadeiro senão # isto é: data1=data2 imprime dia1, mês1, ano1, valor1, valor2 lê (dia1, mês1, ano1, valor1) de arq1 se leitura falhou, fim_arq1 receber verdadeiro lê (dia2, mês2, ano2, valor2) de arq2 se leitura falhou, fim_arq2 recebe verdadeiro fecha arq2 fecha arq1
Enviado em 16/04/2020 - 14:44h
Boa tarde Carolina.Enviado em 16/04/2020 - 14:51h
arquivos arq1, arq2 variáveis fim_arq1, dia1, mês1, ano1, valor1, data1 variáveis fim_arq2, dia2, mês2, ano2, valor2, data2 abre arq1 para leitura fim_arq1 recebe falso abre arq2 para leitura fim_arq2 recebe falso lê (dia1, mês1, ano1, valor1) de arq1 se leitura falhou, fim_arq1 recebe verdadeiro lê (dia2, mês2, ano2, valor2) de arq2 se leitura falhou, fim_arq2 recebe verdadeiro enquanto fim_arq1 diferente de falso ou fim_arq2 diferente de falso, se fim_arq1 = falso, data1 recebe formatação("YYYYmmdd", dia1, mês1, ano1) se fim_arq2 = falso, data2 recebe formatação("YYYYmmdd", dia2, mês2, ano2) se (fim_arq1 = falso) e ((fim_arq2 = verdadeiro) ou (data1 < data2)), imprime dia1, mes1, ano1, valor1, NaN lê (dia1, mês1, ano1, valor1) de arq1 se leitura falhou, fim_arq1 receber verdadeiro senão, se (fim_arq2 = falso) e ((fim_arq2 = verdadeiro) ou (data1 > data2)), imprime dia2, mês2, ano2, NaN, valor2 lê (dia2, mês2, ano2, valor2) de arq2 se leitura falhou, fim_arq2 recebe verdadeiro senão # isto é: data1=data2 imprime dia1, mês1, ano1, valor1, valor2 lê (dia1, mês1, ano1, valor1) de arq1 se leitura falhou, fim_arq1 receber verdadeiro lê (dia2, mês2, ano2, valor2) de arq2 se leitura falhou, fim_arq2 recebe verdadeiro fecha arq2 fecha arq1
Enviado em 16/04/2020 - 14:52h
Enviado em 16/04/2020 - 15:31h
Enviado em 16/04/2020 - 15:38h
{ if(FILENAME=="arq1.txt"){cp1[$1]=$1;cp2[$1]=$2;cp3[$1]=$3;cp4[$1]=$4;} if(FILENAME=="arq2.txt" && ($1==cp1[$1] && $2==cp2[$1] && $3==cp3[$1]) ) printf "%s %s %d %s %s\n" ,cp1[$1],cp2[$1],cp3[$1],cp4[$1],$4 }
awk -f mescla.awk arq1.txt arq2.txt Saída: 1 1 1998 32.5 28.2 2 1 1998 37.2 35.2
Enviado em 17/04/2020 - 01:30h
{ if(FILENAME=="arq1.txt"){cp1[$1]=$1;cp2[$1]=$2;cp3[$1]=$3;cp4[$1]=$4;} if(FILENAME=="arq2.txt" && ($1==cp1[$1] && $2==cp2[$1] && $3==cp3[$1]) ) printf "%s %s %d %s %s\n" ,cp1[$1],cp2[$1],cp3[$1],cp4[$1],$4 }
awk -f mescla.awk arq1.txt arq2.txt Saída: 1 1 1998 32.5 28.2 2 1 1998 37.2 35.2
{ if(FILENAME=="arq1.txt"){cp1[$1]=$1;cp2[$1]=$2;cp3[$1]=$3;cp4[$1]=$4;cp5[$1]=$5;} if(FILENAME=="arq2.txt" && ($1==cp1[$1] && $2==cp2[$1] && $3==cp3[$1] && $4==cp4[$1])) printf "%s %s %s %d %s %s\n",cp1[$1],cp2[$1],cp3[$1],cp4[$1],cp5[$1],$5 }
0 15 6 2014 0.6 1 15 6 2014 0.4 2 15 6 2014 1.19 3 15 6 2014 0.2 4 15 6 2014 0.2 5 15 6 2014 0.4 6 15 6 2014 0.4 7 15 6 2014 0.2 8 15 6 2014 0.2 9 15 6 2014 NaN 10 15 6 2014 NaN 11 15 6 2014 NaN
Enviado em 17/04/2020 - 03:28h
0 15 6 2014 0.6 1 15 6 2014 0.4 2 15 6 2014 1.19 3 15 6 2014 0.2 4 15 6 2014 0.2 5 15 6 2014 0.4 6 15 6 2014 0.4 7 15 6 2014 0.2 8 15 6 2014 0.2 9 15 6 2014 NaN 10 15 6 2014 NaN 11 15 6 2014 NaN
Enviado em 17/04/2020 - 13:16h
Um exemplo de código em C++ que permite ler dois arquivos de entrada preordenados, cada um deles com linhas no formato "dia mês ano valor". Ele é uma implementação do algoritmo que eu mostrei inicialmente.#include <iostream> // Entrada e saída padrão (terminal, no nosso caso). #include <fstream> // Operações com arquivos. #include <cmath> // NaN. using namespace std; // Tipo de dados para representar e comparar datas. struct data_t { unsigned ano, mes, dia; bool operator<(data_t outro){ return ano<outro.ano || (ano==outro.ano && ( mes<outro.mes || (mes==outro.mes && ( dia<outro.dia )) )) ; } }; // Função para imprimir a data num formato desejado. ostream &operator<<(ostream &os, data_t data){ return os << data.dia << ' ' << data.mes << ' ' << data.ano; } int main(){ ifstream arq1("/tmp/arq1.txt"), arq2("/tmp/arq2.txt"); data_t data1, data2; double valor1, valor2; arq1 >> data1.dia >> data1.mes >> data1.ano >> valor1; arq2 >> data2.dia >> data2.mes >> data2.ano >> valor2; while(arq1 || arq2){ if(arq1 && (!arq2 || data1<data2)){ // Se quiser surprimir NaNs do arq2, comente linha abaixo. cout << data1 << ' ' << valor1 << ' ' << NAN << '\n'; arq1 >> data1.dia >> data1.mes >> data1.ano >> valor1; } else if(arq2 && (!arq1 || data2<data1)){ // Se quiser surprimir NaNs do arq1, comente linha abaixo. cout << data2 << ' ' << NAN << ' ' << valor2 << '\n'; arq2 >> data2.dia >> data2.mes >> data2.ano >> valor2; } else{ cout << data1 << ' ' << valor1 << ' ' << valor2 << '\n'; arq1 >> data1.dia >> data1.mes >> data1.ano >> valor1; arq2 >> data2.dia >> data2.mes >> data2.ano >> valor2; } } }
Enviado em 17/04/2020 - 16:07h
{ if(FILENAME=="arq1.txt"){cp1[$1]=$1;cp2[$1]=$2;cp3[$1]=$3;cp4[$1]=$4;} if(FILENAME=="arq2.txt" && ($1==cp1[$1] && $2==cp2[$1] && $3==cp3[$1]) ) printf "%s %s %d %s %s\n" ,cp1[$1],cp2[$1],cp3[$1],cp4[$1],$4 }
awk -f mescla.awk arq1.txt arq2.txt Saída: 1 1 1998 32.5 28.2 2 1 1998 37.2 35.2
{ if(FILENAME=="arq1.txt"){cp1[$1]=$1;cp2[$1]=$2;cp3[$1]=$3;cp4[$1]=$4;cp5[$1]=$5;} if(FILENAME=="arq2.txt" && ($1==cp1[$1] && $2==cp2[$1] && $3==cp3[$1] && $4==cp4[$1])) printf "%s %s %s %d %s %s\n",cp1[$1],cp2[$1],cp3[$1],cp4[$1],cp5[$1],$5 }
0 15 6 2014 0.6 1 15 6 2014 0.4 2 15 6 2014 1.19 3 15 6 2014 0.2 4 15 6 2014 0.2 5 15 6 2014 0.4 6 15 6 2014 0.4 7 15 6 2014 0.2 8 15 6 2014 0.2 9 15 6 2014 NaN 10 15 6 2014 NaN 11 15 6 2014 NaN
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Instalação do Kraiyin-CRM em Linux dentro de VMs no VirtualBox (0)