GNU/Linux >> Linux Esercitazione >  >> Linux

Copia l'intestazione in ogni cella della sua riga?

Ho un file:

AC  AF  AN
3   0.375   8
3   0.375   8

Voglio l'output come:

AC  AF  AN
AC=3    AF=0.375    AN=8
AC=3    AF=0.375    AN=8

C'è qualche comando unix per questo?

Risposta accettata:

awk '
  NR==1 {split($0,a); $1=$1} 
  NR>1 {for(i=1;i<=NF;i++) $i=a[i]"="$i} 
  1' OFS='t' yourfile

Spiegazione:

  • dividi il primo record (riga di intestazione) in un array, in base al separatore di campo predefinito; riassegna $1 in modo che il record venga scritto con il nuovo separatore di campo di output
  • per i record rimanenti, scorrere i campi anteponendo ogni valore di campo con l'elemento dell'array corrispondente all'indice del campo, separato da =
  • stampa record con tab come separatore del campo di output

Linux
  1. Come copiare un database MySQL

  2. comando Linux cp

  3. cp:comando non trovato

  4. Trova e copia i file

  5. CentOS:copia la directory in un'altra directory

Copiare file in Linux

Comando Cp in Linux (copia file)

Kernel Linux e le sue funzioni

Come copiare la directory su Linux

comando cp in Linux/UNIX

comando cut o awk per stampare il primo campo della prima riga