concatenar por nomes

13. Re: concatenar por nomes

David
baixinho930

(usa Ubuntu)

Enviado em 31/01/2017 - 12:51h

msoliver escreveu:

baixinho930 escreveu:

msoliver escreveu:

baixinho930 escreveu:

Ola tudo bem, tenho uma duvida pode me ajudar.

Tenho 2 arquivos lista1.txt e lista2.txt com algumas linhas ex:

lista1.txt

daniel_29anos_branco
julio_22anos_azul
tulio_38anos_amarelo

lista2.txt
julio_caixa4_144
andre
tulio_caixa9_89
joao
daniel_caixa71_76
paulo


Gostaria de saber se existe um comando para recortar as linhas da lista2.txt e adicionar na lista1.txt ficando assim:

lista1.txt

daniel_29anos_branco daniel_caixa71_76
julio_22anos_azul julio_caixa4_144
tulio_38anos_amarelo tulio_caixa9_89

adicionar pelo mesmo nome na mesma linha seria possivel ?

Grato.



Boa tarde Baixinho, verifique se atende a sua necessidade . . .
while IFS="_" read -r C1 C2 C3;do
if egrep "$C1" lista02 > lista.tmp;then
echo "${C1}_${C2}_${C3} $(cat lista.tmp)" >> lista03;fi
done<lista01



marcelo oliver


não consegui bom para facilitar irei colocar como esta a lista1 e lista2 dos meus arquivos

lista1.txt
abel_velasco_zeballos|abel|alameda_catxere|200|condominio_chapada
acelho_de_azevedo_pereira|acelho|al._dos_eucaliptos|955|condominio_farm
adailton_izidoro|adailton|rua_maria_aparecida_clementino|189|parque_américa
adriana_villas_boas_nunes|adriananunes|alameda_das_sibipirunas|0|vila_swevia
agnaldo_faria_de_menezes|agnaldo|rua_maria_diggroco_cavacchini|51|parque_américa
agua_boa_dugri_ltda|agua|rodovia_prefeito_hilario|10|pedregulho
ailton_domingos_da_silva|ailtondomingos|rua_damião_gonçalves_da_silva|58|parque_américa
ailton_josé_pedrosa|ailton|perobas|5|condominio_farm
aírton_da_silva_dimas|airtondimas|rua_suriname|198|parque_américa
alberto_silveira_neto|alberto|rua_suriname|281|parque_américa
alberto_werner_holzer|albertowerner|alameda_das_quaresmeiras|2|vila_swevia
alessandra_mesa_herrera|alessandra|estrada_do_butuxim|0|altos_de_itu
alex_sandro_pedro_da_cunha|alexsandro|rua_havana|30|parque_américa
alexandre_martinez_milla|alexandre|alameda_das_sibipirunas|0|vila_swevia
amauri_da_silva|amauri|alameda_das_alamandas|20|vila_swevia

lista2.txt
abel|10_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.75|sv2_meuclic|groove_52hpn
acelho|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.83|farm_meuclic|groove_52hpn
adailton|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.58|parqueamerica_cabeado|cx3_setor4
adriananunes|6_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.14|sva_meuclic|groove_52hpn
adriano|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.156||
agnaldo|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.62|parqueamerica_cabeado|cx2_setor3
ailton|2_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.73|cda_meuclic|rb_sxt_lite2
ailtondomingos|10_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.66|parqueamerica_cabeado|cx2_setor3
airtondimas|4_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.109|parqueamerica_cabeado|cx4_setor4
alberto|4_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.21|parqueamerica_cabeado|cx5
albertowerner|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.130|suevia_cabeado|cabeado
alemao|10_megas_residencial_urbano|rb_servidor_pppoe|ipxmac|10.0.0.6|mg_meuclic|groove_52hpn
alessandra|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.114|adi_meuclic|groove_52hpn
alexandre|8_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.42|sva_meuclic|groove_52hpn
alexsandro|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.97|parqueamerica_cabeado|cx1_setor3
amauri|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.96|suevia_cabeado|cabeado
anderson|4_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.5|parqueamerica_cabeado|cx4_setor1
andersonalex|6_megas_empresarial_urbano|roteador_parque_america_new|pppoe|172.17.20.87|parqueamerica_cabeado|cx3_setor2
andersonsimioni|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.116|parqueamerica_cabeado|cx3_setor4


queria que a lista3 ficasse assim:

abel_velasco_zeballos|abel|alameda_catxere|200|condominio_chapadaabel|10_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.75|sv2_meuclic|groove_52hpn

acelho_de_azevedo_pereira|acelho|al._dos_eucaliptos|955|condominio_farmacelho|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.83|farm_meuclic|groove_52hpn

etc...


Bom dia Baixinho.
É "NORMAL" não ter dado certo . . .
O SEPARADOR e a quantidade de CAMPOS são diferentes dos que vc citou na 1ª postagem . . .

A lógica é a mesma, só adaptei para o novo IFS e o Nº de CAMPOS
while IFS="|" read -r C1 C2 C3 C4 C5;do
if egrep "^$C2" lista02 > lista.tmp;then
echo "${C1}|${C2}|${C3}|${C4}|${C5} $(cat lista.tmp)" >> lista03;fi
done<lista01





Não consegui amigo, ele chegou a criar o arquivo lista03 com as linhas do lista 2 mais não concatenou as linhas da lista 01, consegue me explicar o comando por favor.



  


14. Re: concatenar por nomes

Rafael da cruz
toskoon

(usa CentOS)

Enviado em 31/01/2017 - 13:44h

Com essa lista nova ficou mais fácil, estou meio corrido hoje então não olhei muito: Pontos que observei o campo 02 do arquivo lista01 é único e sempre igual ao campo 01 do arquivo 02. logo usei essas duas colunas para fazer os joins.

#Elemina linhas que tem na L1 e não tem na L2
for i in `awk -F '|' '{print $2}' lista01`;do grep -o "^${i}|".* lista02;done |sort -t"|" -k2 | uniq > lista2final.txt
#Elemina Linhas que tem na L2Final e não tem na L1
for i in `awk -F '|' '{print $1}' lista2final.txt`;do grep "${i}" lista01 ;done |sort -t"|" -k2 |uniq > lista1final.txt
#Retirar primeira coluna do arquivo L2Final
awk -F"|" '{ print $2 "|" $3 "|" $4 "|" $5 "|" $6 "|" $7}' lista2final.txt > listajoin.txt
#Unir os dois arquivos.
paste -d"|" lista1final.txt listajoin.txt > ArquivoFormatadoFinal.txt


O resultado final desse "script" foram 14 linhas

abel_velasco_zeballos|abel|alameda_catxere|200|condominio_chapada|10_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.75|sv2_meuclic|groove_52hpn
acelho_de_azevedo_pereira|acelho|al._dos_eucaliptos|955|condominio_farm|10_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.66|parqueamerica_cabeado|cx2_setor3
adailton_izidoro|adailton|rua_maria_aparecida_clementino|189|parque_américa|2_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.73|cda_meuclic|rb_sxt_lite2
adriana_villas_boas_nunes|adriananunes|alameda_das_sibipirunas|0|vila_swevia|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.114|adi_meuclic|groove_52hpn
agnaldo_faria_de_menezes|agnaldo|rua_maria_diggroco_cavacchini|51|parque_américa|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.130|suevia_cabeado|cabeado
ailton_domingos_da_silva|ailtondomingos|rua_damião_gonçalves_da_silva|58|parque_américa|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.83|farm_meuclic|groove_52hpn
ailton_josé_pedrosa|ailton|perobas|5|condominio_farm|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.96|suevia_cabeado|cabeado
aírton_da_silva_dimas|airtondimas|rua_suriname|198|parque_américa|4_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.109|parqueamerica_cabeado|cx4_setor4
alberto_silveira_neto|alberto|rua_suriname|281|parque_américa|4_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.21|parqueamerica_cabeado|cx5
alberto_werner_holzer|albertowerner|alameda_das_quaresmeiras|2|vila_swevia|6_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.14|sva_meuclic|groove_52hpn
alessandra_mesa_herrera|alessandra|estrada_do_butuxim|0|altos_de_itu|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.58|parqueamerica_cabeado|cx3_setor4
alexandre_martinez_milla|alexandre|alameda_das_sibipirunas|0|vila_swevia|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.62|parqueamerica_cabeado|cx2_setor3
alex_sandro_pedro_da_cunha|alexsandro|rua_havana|30|parque_américa|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.97|parqueamerica_cabeado|cx1_setor3
amauri_da_silva|amauri|alameda_das_alamandas|20|vila_swevia|8_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.42|sva_meuclic|groove_52hpn



Existe uma linha na lista01 que não tem na lista02.
agua_boa_dugri_ltda|agua|rodovia_prefeito_hilario|10|pedregulho

Pelo que entendi isso ai resolve seu problema. O script do amigo acima também segue uma lógica boa que você pode terminar de adaptar, mas pelo que testei ainda tem que se preocupar com alguns match de linhas.

Abs.




15. Re: concatenar por nomes

David
baixinho930

(usa Ubuntu)

Enviado em 31/01/2017 - 14:31h

toskoon escreveu:

Com essa lista nova ficou mais fácil, estou meio corrido hoje então não olhei muito: Pontos que observei o campo 02 do arquivo lista01 é único e sempre igual ao campo 01 do arquivo 02. logo usei essas duas colunas para fazer os joins.

#Elemina linhas que tem na L1 e não tem na L2
for i in `awk -F '|' '{print $2}' lista01`;do grep -o "^${i}|".* lista02;done |sort -t"|" -k2 | uniq > lista2final.txt
#Elemina Linhas que tem na L2Final e não tem na L1
for i in `awk -F '|' '{print $1}' lista2final.txt`;do grep "${i}" lista01 ;done |sort -t"|" -k2 |uniq > lista1final.txt
#Retirar primeira coluna do arquivo L2Final
awk -F"|" '{ print $2 "|" $3 "|" $4 "|" $5 "|" $6 "|" $7}' lista2final.txt > listajoin.txt
#Unir os dois arquivos.
paste -d"|" lista1final.txt listajoin.txt > ArquivoFormatadoFinal.txt


O resultado final desse "script" foram 14 linhas

abel_velasco_zeballos|abel|alameda_catxere|200|condominio_chapada|10_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.75|sv2_meuclic|groove_52hpn
acelho_de_azevedo_pereira|acelho|al._dos_eucaliptos|955|condominio_farm|10_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.66|parqueamerica_cabeado|cx2_setor3
adailton_izidoro|adailton|rua_maria_aparecida_clementino|189|parque_américa|2_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.73|cda_meuclic|rb_sxt_lite2
adriana_villas_boas_nunes|adriananunes|alameda_das_sibipirunas|0|vila_swevia|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.114|adi_meuclic|groove_52hpn
agnaldo_faria_de_menezes|agnaldo|rua_maria_diggroco_cavacchini|51|parque_américa|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.130|suevia_cabeado|cabeado
ailton_domingos_da_silva|ailtondomingos|rua_damião_gonçalves_da_silva|58|parque_américa|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.83|farm_meuclic|groove_52hpn
ailton_josé_pedrosa|ailton|perobas|5|condominio_farm|4_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.96|suevia_cabeado|cabeado
aírton_da_silva_dimas|airtondimas|rua_suriname|198|parque_américa|4_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.109|parqueamerica_cabeado|cx4_setor4
alberto_silveira_neto|alberto|rua_suriname|281|parque_américa|4_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.21|parqueamerica_cabeado|cx5
alberto_werner_holzer|albertowerner|alameda_das_quaresmeiras|2|vila_swevia|6_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.14|sva_meuclic|groove_52hpn
alessandra_mesa_herrera|alessandra|estrada_do_butuxim|0|altos_de_itu|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.58|parqueamerica_cabeado|cx3_setor4
alexandre_martinez_milla|alexandre|alameda_das_sibipirunas|0|vila_swevia|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.62|parqueamerica_cabeado|cx2_setor3
alex_sandro_pedro_da_cunha|alexsandro|rua_havana|30|parque_américa|6_megas_residencial_urbano|roteador_parque_america_new|pppoe|172.17.20.97|parqueamerica_cabeado|cx1_setor3
amauri_da_silva|amauri|alameda_das_alamandas|20|vila_swevia|8_megas_residencial_urbano|rb_servidor_pppoe|pppoe|172.16.20.42|sva_meuclic|groove_52hpn



Existe uma linha na lista01 que não tem na lista02.
agua_boa_dugri_ltda|agua|rodovia_prefeito_hilario|10|pedregulho

Pelo que entendi isso ai resolve seu problema. O script do amigo acima também segue uma lógica boa que você pode terminar de adaptar, mas pelo que testei ainda tem que se preocupar com alguns match de linhas.

Abs.




Boa obrigado, misturou algumas coisas mais deu certo sim, pq a lista é meio grande e existe nomes iguais vou testando aqui, mais mesmo assim fico grato pela ajuda de todos





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts