GAWKで配列のすべての要素をスキャンすると、値ではなく数値が返される

StackOverflow https://stackoverflow.com/questions/1015586

  •  06-07-2019
  •  | 
  •  

質問

次の機能を指定します:

function process_pipes(text)
{
    split(text,recs,"|");
    for (field in recs){
        printf ("|%s|\n", field)
    }
}

入力が次の場合:0987654321 | 57300 | ERRORアカウント番号が見つかりません| GDUMARESQ | 0199 | 9 | N | 0 ||

テキストではなく以下の数字が表示されるのはなぜですか?

|4|
|5|
|6|
|7|
|8|
|9|
|10|
|1|
|2|
|3|
役に立ちましたか?

解決

split は、コード内に配列 recs を作成し、 recs [1] == 0987654321など

for(recsのフィールド)ループは、配列要素ではなく、インデックスのリストを生成します。

したがって、必要なもの:

function process_pipes(text)
{
    split(text,recs,"|");
    for (field in recs){
        printf ("|%s|\n", recs[field])
    }
}

他のヒント

理由

for ... in 

キーを提供します。使用

printf("|%s|\n",recs[field]);

値を取得します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top