使用 bash(awk),如何从基于多列的管道分隔文件中删除重复项,但需要将列作为输入参数传递。我的文件中有以下数据
Insert|val1|val2|val3|val4
Insert|val1a|val2|val3a|val4
我想根据输入参数删除重复项。有时我希望使用位置 1 和位置 3 删除行,有时使用位置 2 和位置 3 删除行。我正在用这个
awk -F, '!seen[$1,$3 ]++ '
但不知道如何参数化 $1,$2
答案1
这可能就是您想要做的:
$ awk -v c='1 3' -F'|' 'BEGIN{split(c,k," ")} {key=""; for (i in k) key=key FS $(k[i])} !seen[key]++' file
Insert|val1|val2|val3|val4