1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #!/bin/bash
# Le fichier passe en paramètre est suppose contenir
# les données des variables séparées par des ";".
# En sortie, le tableau disjonctif complet
FS=';'
{
head -1 "$1" | awk -F ${FS} '{print NF}';
for f in $(seq 1 $(head -1 "$1" | awk -F ${FS} '{print NF}'));
do
cat "$1" | awk -F ${FS} "{print \$$f}" | sort -u | wc -l;
cat "$1" | awk -F ${FS} "{print \$$f}" | sort -u;
done;
cat "$1";
} | awk -F ${FS} 'BEGIN{
getline NB_VAR;
for (i=1;i<=NB_VAR;i++) {
getline NB_MOD;
VAL="0 ";for (j=2;j<NB_MOD;j++) {VAL=VAL"0 ";};
for (j=1;j<=NB_MOD;j++) {
getline MOD;
printf("%s ",MOD);
val[i MOD]=substr(VAL,0,(j-1)*2)"1 "substr(VAL,0,(NB_MOD-j)*2);
}
}
print "";
}{ for (i=1;i<=NB_VAR;i++) {
printf("%s",val[i $i]);
};print "";
}' |
Partager