Что такое автоматический способ удаления текстовой строки при дублировании - PullRequest
1 голос
/ 19 февраля 2011

Например (ниже), каждая строка уникальна, кроме green car

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

Все, что я хочу, это не удалить одну строку зеленой машины ... но я хочу удалить обе green car ..
другими словами, если какая-либо текстовая строка дублируется 2 или более раз, удалите все из них

Ответы [ 3 ]

2 голосов
/ 19 февраля 2011

Если ваши строки находятся в файле с именем 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
1 голос
/ 19 февраля 2011
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]);
}
0 голосов
/ 19 февраля 2011

маленький заводной скрипт

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
...