且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

从XYZ使用awk到矩阵

更新时间:2023-12-02 21:56:22

awk并没有做实的多维数组,但你可以用一个正确构造字符串假的吧:

awk does not do real multidimensional arrays, but you can fake it with a properly constructed string:

awk '
  {mx[$1 "," $2] = $3}
  END {
    size=sqrt(NR)
    for (x=1; x<=size; x++) {
      for (y=1; y<=size; y++)
          printf("%s ",mx[x "," y])
      print ""
    }
  }
' filename

您可以用一个AWK电话,厕所

You can accomplish your example with a single awk call and a call to wc

awk -v "nlines=$(wc -l < filename)" '
  BEGIN {size = sqrt(nlines)}
  {printf("%s%s", $3, (NR % size == 0 ? ORS : OFS))
}' filename