所以这里我有以下代码:
#!/bin/bash
awk 'BEGIN {f=4} {printf($f" "); f=f-1}'
它将接受如下输入:
1 2 3 4
5 6 7 8
9 1 2 3
4 5 6 7
并打印从右上角到左下角的对角线。 我的问题是..我怎样才能对任意大小的数组执行此操作?我试过了
{f=NF}
但是这导致:“awk:运行时错误:负字段索引 $-1 FILENAME="-"FNR=2 NR=2"
最佳答案
$ awk '{print $(NF+1-NR)}' file
4
7
1
4
$ awk -v ORS=" " '{print $(NF+1-NR)}' file
4 7 1 4
或者如果您想避免在输出行的末尾添加空格并使用终止换行符:
$ awk '{printf "%s%s", (NR>1?FS:""), $(NF+1-NR)} END{print ""}' file
4 7 1 4
关于Bash 打印任意大小数组的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22567581/