gawk
solution.
Uso: ./program.awk input.txt
Além disso, você pode fazer: ./program.awk input.txt | column -t -s $'\t'
para a exibição bonita, se o alinhamento for perdido.
#!/usr/bin/awk -f
function pub_to_aff() {
for(i in pub_arr) {
for(j in pub_arr) {
if(i != j)
aff_arr[i][j]++;
}
}
delete pub_arr;
}
BEGIN {
OFS = "\t";
FS = "\t";
}
$1 != prev_uid {
prev_uid = $1;
pub_to_aff();
}
{
pub_arr[$2] = 1;
}
END {
pub_to_aff();
print "College_A", "College_B", "Collaborated";
for(i in aff_arr) {
for(j in aff_arr[i]) {
print i, j, aff_arr[i][j];
}
}
}
Entrada - duas linhas foram adicionadas para demonstração - para p3
e p4
.
p1 "ADPRI, S"
p1 "ADPRI, S"
p2 "ADPRI, S"
p2 "AAC&S, H"
p3 "AAC&S, H"
p3 "ADPRI, S"
p3 "HU, USA"
p3 "Penn, USA"
p4 "AAC&S, H"
p4 "ADPRI, S"
p5 "AAC&S, H"
p6 "AAC&S, H"
p7 "AAC&S, H"
p8 "AU, A"
p9 "AECI, A"
p10 "AECI, A"
p10 "AECI, A"
Saída
College_A College_B Collaborated
"AAC&S, H" "HU, USA" 1
"AAC&S, H" "Penn, USA" 1
"AAC&S, H" "ADPRI, S" 3
"HU, USA" "AAC&S, H" 1
"HU, USA" "Penn, USA" 1
"HU, USA" "ADPRI, S" 1
"Penn, USA" "AAC&S, H" 1
"Penn, USA" "HU, USA" 1
"Penn, USA" "ADPRI, S" 1
"ADPRI, S" "AAC&S, H" 3
"ADPRI, S" "HU, USA" 1
"ADPRI, S" "Penn, USA" 1
EDIT - teste de dados reais.
Entrada - deixei apenas parte do conteúdo do seu exemplo.txt e alterei algumas linhas para demonstração do funcionamento do script. Observe que, se o arquivo de entrada não contiver universidades colaboradas, o script exibirá apenas uma linha - cabeçalho.
WOS:000355337800046 "ACHARYA NARENDRA DEV COLL, NEW DELHI"
WOS:000355337800046 "ACHARYA NARENDRA DEV COLL, NEW DELHI"
WOS:000355337800046 "ACHARYA PRAFULLA CHANDRA COLL. KOLKATA"
WOS:000328700900001 "ACHARYA PRAFULLA CHANDRA COLL. KOLKATA"
WOS:000338233800012 "ADAMAS INST TECHNOL, KOLKATA"
WOS:000338233800012 "ADARSH MAHAVIDYALAYA DHAMANGAON RAILWAY, AMRAVATI"
WOS:000349637600009 "ADARSH MAHAVIDYALAYA DHAMANGAON RAILWAY, AMRAVATI"
WOS:000314892400031 "ADITYA INST TECHNOL & MANAGEMENT, TEKKALI"
Comando usado: ./program.awk sample.txt | column -t -s $'\t'
Saída
College_A College_B Collaborated
"ADAMAS INST TECHNOL, KOLKATA" "ADARSH MAHAVIDYALAYA DHAMANGAON RAILWAY, AMRAVATI" 1
"ACHARYA NARENDRA DEV COLL, NEW DELHI" "ACHARYA PRAFULLA CHANDRA COLL. KOLKATA" 1
"ACHARYA PRAFULLA CHANDRA COLL. KOLKATA" "ACHARYA NARENDRA DEV COLL, NEW DELHI" 1
"ADARSH MAHAVIDYALAYA DHAMANGAON RAILWAY, AMRAVATI" "ADAMAS INST TECHNOL, KOLKATA" 1