行の各セルのタイトルをコピーします。

行の各セルのタイトルをコピーします。

ファイルがあります:

AC  AF  AN
3   0.375   8
3   0.375   8

私が望む出力は次のとおりです。

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

これを行うUnixコマンドはありますか?

答え1

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

説明する:

  • 最初のレコード(ヘッダー行)をデフォルトのフィールド区切り文字に基づいて配列に分割し、レコードが新しい出力フィールド区切り$1文字として書き込まれるようにします。
  • 残りのレコードについては、フィールドを繰り返し、各フィールド値の前にフィールドインデックスに対応する配列要素を追加します。=
  • タブ文字を出力フィールド区切り文字として使用してレコードを印刷します。

答え2

< yourfile \
   perl -pale '
      $. == 1 and push(@A,@F),next;
      $_ = join $", map { "$A[$_]=$F[$_]" } 0..$#F;
   ' |
 column -t

答え3

NR == 1 {
    for (i = 1; i <= NF; i++) {
        header[i] = $i
        printf "%s\t", $i
    }
    print ""
}

NR > 1 {
    for (i = 1; i <= NF; i++) {
        printf "%s=%s\t", header[i], $i
    }
    print ""
}

1. 次のファイルを作成します。awkprogそして上記の内容を貼り付けてください。
2. ファイル名が次のとおりです。データ.txt
3. 次に実行awk -f awkprog data.txt

関連情報