Usando join
e sort
em bash
:
$ join -t: -1 2 <( sort -t: -k2 colours.txt ) <( sort selected.txt )
Green:Color:Yes
Orange:Color:Yes
Para ordenação correta dos campos:
$ join -t: -1 2 -o1.1,1.2,2.2 <( sort -t: -k2 colours.txt ) <( sort selected.txt )
Color:Green:Yes
Color:Orange:Yes
join
executa uma operação JOIN relacional nos dados de entrada classificados. Nesse caso, o campo de junção é a cor, que aparece como o segundo campo :
-delimited no primeiro arquivo e como o primeiro campo :
-delimited no segundo arquivo.
Com join -t: -1 2
, fazemos com que join
escolha o segundo campo do primeiro arquivo como o campo "unir chave" (o primeiro campo é o padrão) e com os dois <(...)
(substituições de processo em bash
) nós fornecemos os dados classificados. O primeiro sort
é o único que é "especial", pois classifica o primeiro arquivo em seu segundo campo :
-delimited, a cor.
O segundo exemplo acima usa o sinalizador -o
para especificar explicitamente o que gostaríamos de ver na saída e em qual ordem.