6

私はAWKを学んでいます。これは、文字列を配列に分割して反復処理しようとした単純なコードスニペットです。

BEGIN {
  split("a,b,c", a, ",");

  for(i = 1; i <= length(a); i++) {
    print a[i];
  }
}

このコードを実行すると、次のエラーが発生します。

awk:awk.txt:4:致命的:スカラーコンテキストで配列`a'を使用しようとしました

ただし、forステートメントをfor (i in a)それに変更すると、問題なく機能します。グーグルでこれが何を意味するのかをさらに理解しようとすると、awkのバグについて話しているフォーラム(例: [1] )がいくつかあります。ここにあるAWKの達人が、エラーメッセージの意味を理解するのに役立つといいですね。

4

2 に答える 2

7

length文字列引数が必要です。あなたはそれに配列を渡しています。エラーメッセージは、スカラーが期待される配列を使用していることを示しています。

于 2012-09-10T16:00:09.663 に答える
4
BEGIN {
  count = split("a,b,c", a, ",");

  for(i = 1; i <= count; i++) {
    print a[i];
  }
}

また、length(ARRAY)私のバージョンのawk(GNU awk 4.0.1)でも動作しますが、ドキュメントには動作が非標準であると記載されています。

于 2012-09-10T16:03:50.860 に答える