Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление повторяющихся строчек

Ответить
Настройки темы
CMD/BAT - [решено] Удаление повторяющихся строчек

Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


Добрый день!

В теме http://forum.oszone.net/post-2190909.html есть такой же вопрос, но ответ дан для строк, не содержащих пробелы. В моём случае присутствуют пробелы, кавычки и квадратные скобки. Подскажите, пожалуйста, как можно реализовать вывод из исходного файла строк, исключая дубликаты? Я пробовал так:

Код: Выделить весь код
for /f "delims=" %%a in (123.txt) do (
findstr /i /x /c:"%%a" 456.txt || echo %%a >> 456.txt)
Но кавычки мешают

Отправлено: 12:56, 07-08-2013

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


если порядок не важен:
Код: Выделить весь код
@echo off
(
for /f "tokens=1* delims=[] " %%a in ('^<123.txt find /n /v ""') do set "$.%%b=."
for /f "tokens=*" %%a in ('set $.') do (set "$a=%%a"
  setlocal EnableDelayedExpansion
  set "$a=!$a:~2,-2!"
  echo/!$a!
  endlocal
))>456.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:19, 07-08-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


amel27, Спасибо большое! А можно пример с сохранением порядка, пожалуйста, если не затруднит?

Отправлено: 13:52, 07-08-2013 | #3


Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


Всё, проблема решена! :D Извините за беспокойство. Вот что получилось:

Код: Выделить весь код
@echo off
setlocal disableDelayedExpansion
set "file=123.txt"
set "line=%file%.line"
set "deduped=%file%.deduped"
set LF=^

>"%deduped%" (
  for /f usebackq^ eol^=^%LF%%LF%^ delims^= %%A in ("%file%") do (
    set "ln=%%A"
    setlocal enableDelayedExpansion
    >"%line%" (echo !ln:\=\\!)
    >nul findstr /xlg:"%line%" "%deduped%" || (echo !ln!)
    endlocal
  )
)
>nul move /y "%deduped%" "%file%"
2>nul del "%line%"
Правда, результат перезаписывает исходный файл, но так даже удобнее)

Последний раз редактировалось Bruce Wayne, 07-08-2013 в 14:51.


Отправлено: 14:39, 07-08-2013 | #4


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Bruce Wayne:
пример с сохранением порядка »
Код: Выделить весь код
@echo off
(
for /f "tokens=1* delims=[] " %%a in ('^<123.txt find /n /v ""') do (
  set "$b=$.%%b"
  setlocal EnableDelayedExpansion
  if not defined !$b! echo/!$b:~2!
  endlocal
  set "$.%%b=."
))>456.txt

Отправлено: 14:47, 07-08-2013 | #5


Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


amel27, спасибо огромное!

Отправлено: 14:50, 07-08-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление повторяющихся строчек

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление повторяющихся айпи dj_crazy_joker Скриптовые языки администрирования Windows 9 21-04-2012 16:08
CMD/BAT - [решено] Определение кол-ва строчек в файле Олег97 Скриптовые языки администрирования Windows 2 20-08-2010 09:11
[решено] StringRegExp. Вытаскивание повторяющихся кусков кода HTML. ikif AutoIt 7 06-12-2009 10:30
CMD/BAT - [решено] реализация еcho в несколко строчек shtorm13-13 Скриптовые языки администрирования Windows 6 09-05-2009 00:06




 
Переход