J'ai un fichier :
AC AF AN
3 0.375 8
3 0.375 8
Je veux que la sortie soit :
AC AF AN
AC=3 AF=0.375 AN=8
AC=3 AF=0.375 AN=8
Existe-t-il une commande unix pour cela ?
Réponse acceptée :
awk '
NR==1 {split($0,a); $1=$1}
NR>1 {for(i=1;i<=NF;i++) $i=a[i]"="$i}
1' OFS='t' yourfile
Explication :
- diviser le premier enregistrement (ligne d'en-tête) en un tableau, basé sur le séparateur de champs par défaut ; réaffecter
$1
afin que l'enregistrement soit écrit avec le nouveau séparateur de champ de sortie - pour les enregistrements restants, bouclez sur les champs en ajoutant à chaque valeur de champ l'élément de tableau correspondant à l'index de champ, séparé par
=
- imprimer les enregistrements avec une tabulation comme séparateur de champ de sortie