在awk中删除数组的下标/索引

时间:2012-07-30 08:09:30

标签: shell awk

我使用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
gone

我的目标是从文件中获取值并与之前声明的数组匹配,如果任何值匹配则打印文件中的值

awk script

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

所以这会给我想要的结果。但是假设“hi”在数组中只出现一次,因此当动作块找到值时,应该打印该值,并且还应该删除数组中相应的条目referenceIdArray [“hi”]。为了使搜索有效。由于它们存储为下标,我不知道如何删除条目。有关此问题的任何建议。谢谢。

1 个答案:

答案 0 :(得分:7)

您可以使用delete语句删除数组中的单个元素:

delete array[index]

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