ファイルから同じヘッダー行と列に対応する値を抽出するには?

ファイルから同じヘッダー行と列に対応する値を抽出するには?

次のファイルがあります

    1 2 3 4 5 
1   a b c d e
2   f g h i j
3   k l m n o
4   p k r s t
5   w x w z #

位置1,1 - 2,2 - 3,3 - 4,4と5,5に対応する値を抽出したいと思います。

つまり、希望の出力

1 2 3 4 5
a g m s # 

ベストアンサー1

$ awk 'FNR == 1 { sub("^ *", ""); print; ORS=" "; next } { print $FNR } END { printf("\n") }' file
1 2 3 4 5
a g m s #

コードawkは次のことを行います。

  1. その行が最初の行の場合は、行の先頭のスペースを削除して印刷します。次に、出力レコード区切り文字(ORS)を空白に変更し、次の行に移動します。
  2. 他のすべての行については、行番号に対応するフィールドを印刷します。値のため、データは改行文字ではなく末尾のスペースで印刷されますORS
  3. 最後に改行文字が出力されます。

おすすめ記事