Ich habe versucht, ein Pseudo-multidimensionales Array in awk.mehrdimensionale Arrays in awk
# Calculate cumulative context score
BEGIN { FS=OFS="\t" }
{
a[$2+FS+$7,$3]+=$6
}
END { for (i,j) in a
{ print i,j,a[i,j] }
}
Ausgang:
awk: ccstscan.awk:9: END { for (i,j) in a
awk: ccstscan.awk:9: ^syntax error
das ist, was in GNU awk Handbuch erwähnt wird:
To test whether a particular index sequence exists in a multidimensional array, use the same operator (in) that is used for single dimensional arrays. Write the whole sequence of indices in parentheses, separated by commas, as the left operand:
(subscript1, subscript2, ...) in array
Ich habe versucht, das Skript Modifizieren eines True-mehrdimensionale Array zu erstellen:
BEGIN { FS=OFS="\t" }
{
a[$2+FS+$7][$3]+=$6
}
END { for i in a
{
for j in a[i]
{ print i,j,a[i][j]
}
}
}
ich lief es mit gaffen. es gab auch einen Fehler:
gawk: ccstscan.awk:6: a[$2+FS+$7][$3]+=$6
gawk: ccstscan.awk:6: ^syntax error
gawk: ccstscan.awk:9: END { for i in a
gawk: ccstscan.awk:9: ^syntax error
gawk: ccstscan.awk:11: for j in a[i]
gawk: ccstscan.awk:11: ^syntax error
gawk: ccstscan.awk:11: for j in a[i]
gawk: ccstscan.awk:11: ^syntax error
gawk: ccstscan.awk:12: { print i,j,a[i][j]
gawk: ccstscan.awk:12: ^syntax error
was das richtige Format zu machen und scannen mehrdimensionale-assoziative Arrays
die Schleife fehlt (und), es ist 'für (i in a)', nicht 'für i in a'. Außerdem erhalten Sie wahrscheinlich den ersten Syntaxfehler über die Array-Indizes, weil Sie ein älteres Gawk verwenden, wahre mehrdimensionale Arrays sind eine ziemlich neue Ergänzung. –
Ich würde einen Link von Arrays von Arrays in gawk4 hinzufügen http://www.gnu.org/software/gawk/manual/html_node/Arrays-of-Arrays.html – Kent