3

値を配列の添え字/インデックスとして格納するという awk の概念を使用しています。以下のコードを見てください

stringVariable="hi,bye,cool.hot,how,see";
split(stringVariable,stringArray,",");

#This loop will iterate and stores the RIDs in the requestIds variable into an array
for(tr=1;tr<=length(stringArray);tr++)
{
Count++;
    referenceIdArray[stringArray[tr]]++;
}

したがって、私の referenceId 配列には、hi,bye,cool,hot,how,see が含まれます。

次の値を持つサンプルファイルを考えてみましょう

hi
bye
gone

私の目的は、ファイルから値を取得し、以前に宣言された配列と一致することです。値のいずれかが一致する場合は、ファイルから値を出力します

awk script

awk '{BEGIN (Array loading done previously)} {if($0 in referenceIdArray) {print $0}}'

したがって、これにより、望ましい結果が得られます。ただし、「hi」が配列内に 1 回だけ表示されると仮定すると、アクション ブロックが値を見つけると、値が出力され、配列内の対応するエントリである referenceIdArray["hi"] も削除される必要があります。検索を効率化するためです。それらは添え字として保存されているため、エントリを削除する方法がわかりません。これに関する提案。ありがとうございました。

4

1 に答える 1

7

delete次のステートメントを使用して、配列の個々の要素を削除できます。

delete array[index]

参照: http://www.math.utah.edu/docs/info/gawk_12.html

于 2012-07-30T08:24:40.853 に答える