Simplesmente com awk :
awk 'NR==FNR{ pos[$1]; next }FNR in pos' positions.txt data.txt
-
NR==FNR{ ... }- processando o primeiro arquivo de entrada (ou seja,positions.txt):-
pos[$1]- acumulando posições (números de registro) configurados comoposarray keys -
next- pula para o próximo registro
-
-
FNR in pos- durante o processamento do segundo arquivo de entradadata.txt(FNRindica quantos registros foram lidos do arquivo de entrada atual). Imprimir registro somente se o número de registro atualFNRestiver na matriz de posiçõespos(pesquisa nas chaves)
Exemplo de saída:
667 ffg wew 23
533 jhf qwe 54
...