GNU/Linux >> Znalost Linux >  >> Linux

Kopírovat záhlaví v každé buňce jeho řádku?

Mám soubor:

AC  AF  AN
3   0.375   8
3   0.375   8

Chci výstup jako:

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

Existuje na to nějaký unixový příkaz?

Přijatá odpověď:

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

Vysvětlení:

  • rozdělte první záznam (řádek záhlaví) do pole na základě výchozího oddělovače polí; znovu přiřadit $1 takže záznam bude zapsán s novým oddělovačem výstupních polí
  • u zbývajících záznamů použijte smyčku přes pole a před každou hodnotu pole vložte prvek pole odpovídající indexu pole, oddělený znakem =
  • tiskněte záznamy s tabulátorem jako oddělovačem výstupních polí

Linux
  1. Rozdělit soubor podle počtu řádků včetně záhlaví v každém z nich?

  2. Kopírovat obsah souboru do schránky bez zobrazení jeho obsahu?

  3. cp:příkaz nenalezen

  1. Najděte a zkopírujte soubory

  2. příkaz cut nebo awk pro tisk prvního pole prvního řádku

  3. Jak transakčně zkopírovat soubor?

  1. Jak zkopírovat databázi MySQL

  2. Jak to, že každý program nebo služba má svůj vlastní účet v /etc/passwd?

  3. ip route zobrazit pole src