如何在awk中清除地图?

Ter*_*ang 2 awk dictionary

我有一个文件a.txt。a.txt中每一行都有很多数字:

1 2 3 1 2
5 6 7 7
19 20 20
Run Code Online (Sandbox Code Playgroud)

我必须打印没有重复数字的每一行,就像以下结果一样:

1 2 3
5 6 7
19 20
Run Code Online (Sandbox Code Playgroud)

我在awk中使用map,但每次都必须清除map。我不知道在阅读每一行时如何清除 awk 中的地图。

awk '{ split($0, arr, " "); \
for(i=1;i<=length(arr);i++){dup_map[arr[i]]=1;} \
for(num in dup_map){printf("%s ", num);} printf("\n"); clear dup_map; } \
}' a.txt
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何在 awk 中清除地图吗?

Sch*_*eff 5

gawk 有一个功能delete

delete array
Run Code Online (Sandbox Code Playgroud)

在 awk 中,这可以通过以下方式实现

split("", array)
Run Code Online (Sandbox Code Playgroud)

split 函数(请参阅字符串操作的内置函数部分)首先清除目标数组。此调用要求它拆分空字符串。由于没有数据可供拆分,因此该函数只需清除数组然后返回。

gawk 在线手册中提到了这两个选项。