1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| awk '
{
# NF est le nombre de champs
# $NF est la valeur du dernier champs
# split découpe ce dernier champs en morceaux en prenant "-" comme séparateur
# split retourne le nombre de morceaux trouvés
# split construit un tableau nommé "a"
n=split($NF,a,"-")
# s'il n'y a qu'un morceau, on affiche la ligne originale ($0) , pas de traitement donc
if(n==1) print $0
# sinon, il y a une plage a traiter:
else {
# on supprime le dernier champs et le caractère qui le précède dans $0
sub("." $NF,"")
# pour chaque valeur
for(i=a[1];i<=a[2];i++) {
# on affiche $0 tronqué suivi du numero voulu
print $0 " " i
}
}
}
' |