如何删除分隔文本行内的重复



在一行的分隔项中删除重复(不一定是连续的)是一种聪明而简单的方法。

以前:

apple,banana,apple,cherry,cherry
delta,epsilon,delta,epsilon
apple pie,delta,delta

后:

apple,banana,cherry
delta,epsilon
apple pie,delta

应该在 Mac 上工作。 允许 unicode。任何 shell 方法/语言/命令。重复不一定是连续的。

注意:这个问题是 如何从文本块中删除重复 - 适用于用空行分隔的文本块。

awk -F, '{ for(i=1;i<=NF;i++) if( split($0,t,$i)>2 ) sub($i",","") }1' file             
banana,apple,cherry
delta,epsilon
apple pie,delta

SED版本:

sed -r 's/(.+)(.*),1/12,/g;s/,$//' file
apple,banana,cherry
delta,epsilon
apple pie,delta

只是代码。

$ awk 'BEGIN { FS=OFS="," }
{
    delete seen
    sep=""
    for (i=1;i<=NF;i++) {
        if (!seen[$i]++) {
            printf "%s%s", sep, $i
            sep = OFS
        }
    }
    print ""
}' file
apple,banana,cherry
delta,epsilon
apple pie,delta

最新更新