質問: 1 2 3 4 5 6 7 8 9 というデータ(aa.txtとします)があった時、 awkだけを使うという制約のもと、 斜めに1,5,9(または3,5,7)を取得するにはどうすればいいでしょうか? 私は awk 'NR==i{print $i}' aa.txt をループすればできると思ったのですが、うまくできませんでした
回答: ``` awk '{print $NR}' aa.txt awk '{print $(NF-NR+1)}' aa.txt ``` `NR`は処理している行の先頭からの番号(上から何行目か)が代入されている組み込みの変数です。 `NF`は処理している行のフィールド数(列の数)が代入されている組み込みの変数です。 `$`はフィールドを参照する演算子で、よく`$1`(=1列目)とか`$2`(=2列目)というふうに使われますが、`$(式)`という形で数字だけでなく式を与えることもできます。(※ひとつ目のコードは`()`を省略しています)