2014-09-20 6 views
1

У меня есть большой текстовый файл, содержащий список писем, называемых «main», и я отправил письма некоторым из них. У меня есть список «отправленных» писем. Теперь я хочу удалить «отправленные» письма из списка «main».Как удалить обе соответствующие линии при удалении дубликатов

Другими словами, я хочу удалить как исходный текст из текстового файла при удалении дубликатов. Пример:

у меня есть:

[email protected] 
[email protected] 
[email protected] 

Я хочу:

[email protected] 

Есть ли более простой способ для достижения этой цели? Пожалуйста, предложите инструмент или способ для этого, но, пожалуйста, рассмотрите текстовый файл размером более 10 МБ.

+0

Поддерживает ли Notepadd ++ регулярное выражение/скрипты? – sln

+0

@sln да. – Cullub

+0

Возможно, вы используете командлет сравнения объектов-оболочек powertechnet http://technet.microsoft.com/en-us/library/ee156812.aspx –

ответ

0

В терминале:

cat test| sort | uniq -c | awk -F" " '{if($1==1) print $2}' 
+4

не могли бы вы немного подробнее рассказать о своем ответе? – Miki

+1

Не могли бы вы объяснить немного больше? – leopard121

0

Я использую cygwin много для таких задач, как командная строка Unix является невероятно мощным.

Вот как добиться того, что вы хотите:

cat main.txt | sort -u | grep -Fvxf sent.txt 

sort -u удалит дубликаты (сортировка файла main.txt первой), и grep будет заботиться о удалении нежелательных адресов.

Вот то, что grep вариантов означают:

  • -F обычных текстовый поиск
  • -v инвертировать результаты
  • -x заставит всю линию, чтобы соответствовать шаблону
  • -f шаблонов чтения из указанного файла

О, и если ваши файлы в формате Windows (CR LF Newlines) вы скорее должны сделать это:

cat main.txt | dos2unix | sort -u | grep -Fvxf <(cat sent.txt | dos2unix) 

Так же, как с помощью командной строки Windows, вы можете просто добавить:

> output.txt 

в конце командной строки для перенаправления вывода в текстовый файл.

+0

Большое спасибо. Но есть ли способ сделать это в Notepad ++ или любом другом подобном программном обеспечении на основе Windows. – leopard121

+0

Это слишком много, чтобы попросить текстовый редактор обрабатывать, но cygwin для окон. –

Смежные вопросы