$ join -t '|' -2 2 file1 file2
23455|abc|xyz|v343v
23455|abc|xyz|z565z
23455|abc|xsd|v343v
23455|abc|xsd|z565z
34433|wer|sad|c9898
45655|fdf|fcd|b2323
Isso realiza uma operação de JOIN relacional nos dois arquivos. O -t '|'
informa join
que |
é usado como um delimitador de campo nos dados de entrada e -2 2
diz para usar o segundo campo no segundo dos dois arquivos (em vez do primeiro).
Isso pressupõe que a coluna de junção esteja classificada nos dois arquivos.
Eles não estão classificados e pré-classificam os arquivos usando
sort -t '|' -k1 -o file1 file1
sort -t '|' -k2 -o file2 file2
ou classifique ao mesmo tempo que você chama join
usando uma substituição de processo em um shell que suporte isso:
join -t '|' -2 2 \
<( sort -t '|' -k1 file1 ) \
<( sort -t '|' -k2 file2 )