Digamos que eu tenha dois comandos diferentes que geram conteúdo por colunas, por exemplo:
$ command_1
7049857 abc fdg hsi
5409858 xxx fyy hsi
540958 abc zzz hsi
54230956 rbc sss hsi
$ command_2
7049857 0 fdg free
5409858 0 fyy free
540958 2 zzz free
Eu gostaria de pegar silenciosamente colunas com índices x,y,z da saída de command_1 e as colunas com índices a,b,c da saída command_2 e imprimir uma nova saída: x,y,z,a,b,c .
Exemplo:
Emita a coluna de coluna 1 e 2 de commmand_2 : e a última coluna de command_1 :
$ new_command
7049857 0 hsi
5409858 0 hsi
540958 2 hsi
O que eu tenho até agora:
Sou relativamente novo em awk , mas sei que posso pegar as colunas correspondentes de cada um desses comandos com awk :
command_1 | awk '{print $x " " $y " " $z}'
command_2 | awk '{print $a " " $b " " $c}'
O acima concatena as colunas verticalmente, mas eu preciso concatená-las horizontalmente.
Imprimir somente as linhas que se cruzam na primeira coluna:
Digamos que é possível que command_2 tenha mais ou menos linhas que command_1 . No entanto, a primeira coluna de ambos os comandos contém itens pertencentes à mesma categoria (um ID de vários dígitos, como no exemplo acima)
Com isso, supondo que a primeira coluna de ambos os comandos seja classificada igualmente e que entradas novas ou ausentes só possam acontecer no final, como podemos garantir que apenas imprimamos as linhas para as quais temos entradas em command_1 e command_2 (ou seja, a interseção de ambos os comandos)? (o exemplo acima mostra isso)