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