Como os arquivos são classificados agora? A linha 3, digamos, dos três arquivos se refere ao mesmo aluno? Nesse caso, você poderia expandir sua paste
solution para isso:
paste /studentName/name.txt /studentMail/mail.txt /studentNumber/number.txt | sort
que ordenaria todos os registros (linhas) pelo nome do aluno. Você poderia classificar por algum outro campo usando as opções apropriadas para sort
.
Para selecionar uma única linha a ser exibida, siga qualquer comando que forneça uma lista classificada corretamente com grep
, por exemplo,
paste ... | sort | grep 'pattern'
onde "padrão" seria seu critério de pesquisa na forma de uma expressão regular. Claro, se você está selecionando apenas uma linha, não há necessidade de sort
.
Outro comando que você pode achar útil é join
, mas eu não sei o suficiente sobre isso para dar um exemplo de seu uso.
Atualização: formatação com awk
A saída do comando paste
acima é uma seqüência de linhas, cada linha consistindo em três campos separados uns dos outros por guias, ou seja,
Estas linhas podem ser formatadas colocando-as no seguinte comando awk
.
awk -F '\t' '{printf "%-20s%-16s%s\n", $1, $2, $3}'
O argumento -F '\t'
especifica que o separador do campo de entrada é um caractere de tabulação. Isso separará as linhas de entrada em três campos aos quais awk
se refere, por $1
, $2
e $3
. A linguagem awk
inclui uma função printf
que se comporta essencialmente da mesma forma que a função printf()
da biblioteca C. A string de formato acima especifica três campos de string. O primeiro, %-20s
, especifica que o parâmetro de string correspondente seja justificado à esquerda em um campo de 20 caracteres. O segundo, %-16s
, especifica que seu parâmetro seja justificado à esquerda em um campo de 16 caracteres. O último, %s
, apenas acrescenta seu parâmetro ao que foi formatado até o momento. Finalmente, o \n
coloca uma nova linha no final para que cada linha de entrada seja formatada para uma linha de saída separada.
Para ajustar a saída ao seu gosto, basta alterar as larguras do campo e / ou remover os sinais de menos para justificar as cordas à direita. Para mais opções, consulte as páginas awk
e printf
man.