1

例如(如下),每一行都是唯一的,除了green car

blue car
red car
green car
black car
white car
yellow car
green car
brown car

我想要的不是删除一行绿色汽车......但我想删除这两个green car......
换句话说,如果任何文本行重复 2 次或更多次,请将它们全部删除

4

3 回答 3

2

如果您的字符串位于data当前目录中命名的文件中,则以下命令行在 *NIX 系统上执行您想要的操作:

$ sort < data | uniq -c | awk '{ if ($1 == 1) print }' | cut -d' ' -f8-

编辑:如果要将结果保存回输入文件,可以执行以下操作:

$ sort < data | uniq -c | awk '{ if ($1 == 1) print }' \
> | cut -d' ' -f8- > data.new && mv data.new data

要处理当前目录中的所有文件,您可以执行以下操作:

$ for f in *; do sort < $f | uniq -c | awk '{ if ($1 == 1) print }' \
> | cut -d' ' -f8- > $f.new && mv $f.new $f; done
于 2011-02-19T15:16:52.657 回答
1
blue car
red car
black car
white car
yellow car
brown car

编辑:您可以在 php 中执行此操作:

$a = array_count_values($mydata);
foreach ($mydata as $key=>$datum) {
  if ($a[$datum] > 1) unset($mydata[$key]);
}
于 2011-02-19T15:07:52.887 回答
0

一个小巧的 groovy 脚本

def list =["blue car","red car","green car","green car","green car","brown car"]
def value =0
def finalList =[]
list.each{
    value = list.count(it)
    finalList.add(it)
    if(value >1){
        finalList.remove(it)
    }
}
def file = new File("dulicateRemoved.txt")
file<<finalList
于 2011-02-19T16:04:15.807 回答