我有一个格式为
的文件0000000540|Q1.1|margi|Q1.1|margi|Q1.1|margi
0099940598|Q1.2|8888|Q1.3|5454|Q1.2|8888
0000234223|Q2.10|saigon|Q3.9|tango|Q1.1|money
我正在尝试删除出现在同一行的重复项。
所以,如果一行有
0000000540|Q1.1|margi|Q1.1|margi|Q1.1|margi
我希望它是
0000000540|Q1.1|margi
如果该行
0099940598|Q1.2|8888|Q1.3|5454|Q1.2|8888
我希望它像
0099940598|Q1.2|8888|Q1.3|5454
我想在一个shell脚本上执行此操作,该脚本接收输入文件并输出没有重复项的文件。
提前感谢任何可以提供帮助的人
答案 0 :(得分:1)
这应该这样做,但对于大文件可能效率不高。
awk '
{
delete p;
n = split($0, a, "|");
printf("%s", a[1]);
for (i = 2; i <= n ; i++)
{
if (!(a[i] in p))
{
printf("|%s", a[i]);
p[a[i]] = "";
}
}
printf "\n";
}
' YourFileName