awk
sozinho pode fazer isso:
awk 'NR==FNR{seen[$1]=seen[$1]","NR; next};
{if ($1 in seen){printf("%s: %s\n", $1, substr(seen[$1], 2))}}' file2 file1
Eu tenho alguns dados brutos em um arquivo, digamos File1.txt
Colt McCoy QB CLE 135 222 1576 6 9 60.8% 74.51
Josh Freeman QB TB 291 474 3451 25 6 61.4% 95.9
Matt Cassel QB KC 262 450 3116 27 7 58.2% 93.0
Michael Vick QB PHI 233 372 3018 21 6 62.6% 100.2
Matt Schaub QB HOU 365 574 4370 24 12 63.6% 92.0
Arquivo 2.txt tem uma lista de nomes, um nome por linha
Josh
Matt
Eu quero obter a saída como Nome e número da linha. Para o exemplo acima, seria:
Josh: 2
Matt: 3,5
Eu tenho um comando que me dá a lista de nomes e os números de linha, mas quero imprimi-lo no formato desejado acima. Meu comando atual é
awk '{print $1, NR}' file1.txt | grep -f file2.txt
Mostra
Josh 2
Matt 3
Matt 5
O que posso fazer para imprimir como o formato desejado?
Você pode usar diff -y file1 file2
.
Ele fornecerá uma saída lado a lado dos dois arquivos. Ele também tem outras opções para analisar sua saída. Revise a página de manual para obter mais opções .
Tags grep text-processing awk