Bash 删除每行的重复项

Bash 删除每行的重复项,bash,scripting,sed,Bash,Scripting,Sed,我有几个csv是这样的: 我有几个大的文本文件csv的一些行有多余的条目。也就是说,由于合并方式的不同,某个字段通常会有两到三次相同的值。但顺序并不总是一样的 BWTL,时事通讯,时事通讯 BWTL,时事通讯,R2R,时事通讯 MPWJ,OOTA主机,OOTA主机,OOTA主机 OOTA主机,ITOS,OOTA主机 等。相邻的条目很容易用sed清理 sed-i’s/NEWSLETTER,NEWSLETTER/NEWSLETTER/g'*.csv 有没有类似的快速修复其他副本的方法?您可以执行以下

我有几个csv是这样的:

我有几个大的文本文件csv的一些行有多余的条目。也就是说,由于合并方式的不同,某个字段通常会有两到三次相同的值。但顺序并不总是一样的

BWTL,时事通讯,时事通讯 BWTL,时事通讯,R2R,时事通讯 MPWJ,OOTA主机,OOTA主机,OOTA主机 OOTA主机,ITOS,OOTA主机

等。相邻的条目很容易用sed清理

sed-i’s/NEWSLETTER,NEWSLETTER/NEWSLETTER/g'*.csv


有没有类似的快速修复其他副本的方法?

您可以执行以下操作

sed -i "" 's/^\(.*NEWSLETTER.*\), NEWSLETTER/\1/g' eNewsletter.csv_new.csv
它的工作原理是捕获所有内容,直到第二份时事通讯^表示行首 \和\分隔捕获,和。*表示所有内容。然后,它将仅用捕获的部分替换匹配的字符串。

尝试:

#!/bin/bash

awk -F"," '
{
 delete a
 for(i=1;i<=NF;i++){
 gsub(/^ +| +$/,"",$i)
 if( !( $i in a) ) {
     printf "%s,",$i
     a[$i]
 }
 }
 print ""
}' file

尽管如此,这只报告彼此相邻的重复项。

效果很好!但是,它确实给我留下了两个逗号或在行尾的逗号。添加逗号的更改使它不再删除重复项?或者在运行我的sed行之后,它似乎只影响彼此不在一起的副本?OOTA主机呢?它们也是复制品。太好了!非常感谢你@ghostdog74:我刚刚用OOTA主机或任何其他重复的短语替换了时事通讯,它也清除了它们。
# Sort before using the uniq command
sort largefile.csv | sort | uniq -d