GNU/Linux >> Tutoriels Linux >  >> Linux

Copier l'en-tête dans chaque cellule de sa ligne ?

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

Linux
  1. Copier le contenu d'un fichier dans le presse-papiers sans afficher son contenu ?

  2. Comment se fait-il que chaque programme ou service ait son propre compte dans /etc/passwd ?

  3. Commande Linux cp

  4. Rechercher et copier des fichiers

  5. Comment compresser plusieurs dossiers, chacun dans sa propre archive zip ?

Copier des fichiers sous Linux

Commande Cp sous Linux (Copier des fichiers)

Le noyau Linux et ses fonctions

Comment copier un répertoire sous Linux

Diviser le fichier par nombre de lignes, y compris l'en-tête dans chacune ?

commande cp sous Linux/UNIX