我有一个文件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 中清除地图吗?
gawk 有一个功能delete:
delete array
Run Code Online (Sandbox Code Playgroud)
在 awk 中,这可以通过以下方式实现
split("", array)
Run Code Online (Sandbox Code Playgroud)
split 函数(请参阅字符串操作的内置函数部分)首先清除目标数组。此调用要求它拆分空字符串。由于没有数据可供拆分,因此该函数只需清除数组然后返回。
gawk 在线手册中提到了这两个选项。