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

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

Ответить
Настройки темы
CMD/BAT - удаление строк

Новый участник


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

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


Изменения
Автор: drone4888
Дата: 07-08-2014
Здравствуйте, помогите, пожалуйста, написать батник для удаления строк

Имеется текст в таком формате к примеру (вместо слов также могут быть цифры)

mamy;token;8d
mamy;ret;10e
mamy;hyu;11d
mamy;reyy;18d
mamy;lop[;98
mamy;nhjjj;17g
mamy;4trgg;6999r
mamy;fjk;1444f
mamy;ewrr;148gf
mamy;kjkgj;544545f
mamy;dgfgrrt;544545f
mamy;kjkvbvbngj;4656f
toka;loka;18d85f
lpod;fhfgnhjj;rnjn556
more;herpiot;jnr66
velret;ghrt6y;fnh555

Необходимо удалить строки те, у которых попадаются в тексте больше, чем 10 строк с повторяющимся словом/цифрой.
Напимер строка со словом mamy имеет 11 строк - весь список со словом mamy надо удалить. Если строк меньше или равно 10 с повторяющимся словом или цифрой - оставить и не удалять

спасибо за помощь

Отправлено: 02:06, 07-08-2014

 

Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
(
for /f "usebackq tokens=1-3 delims=;" %%i in ("example.txt") do (
 for %%l in ("%%i" "%%j" "%%k") do (
  echo.%%~l
  )
 )
)>1.tmp
(
for /f "delims=" %%i in ('sort 1.tmp') do (
 if not defined v (
  set v=%%i
  set c=1
  ) else (
  if "%%i"=="!v!" (
   set /a c+=1
   if !c! gtr 10 (
    echo.%%i
    )
   ) else (
   set v=%%i
   set c=1
   )
  )
 )
)>2.tmp
findstr /lvg:2.tmp "example.txt">"new.txt"
del 1.tmp 2.tmp
endlocal
exit /b

Отправлено: 22:16, 07-08-2014 | #2



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

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


Ветеран


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

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


drone4888, если Вас интересует использование только первой части "триады", то это ещё проще и в некоторых случаях точнее:

Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
(
for /f "usebackq delims=;" %%i in ("example.txt") do (
 echo.%%i;
 )
)>1.tmp
(
for /f "delims=" %%i in ('sort 1.tmp') do (
 if not defined v (
  set v=%%i
  set c=1
  ) else (
  if "%%i"=="!v!" (
   set /a c+=1
   if !c! gtr 10 (
    echo.%%i
    )
   ) else (
   set v=%%i
   set c=1
   )
  )
 )
)>2.tmp
findstr /lvg:2.tmp "example.txt">"new.txt"
del 1.tmp 2.tmp
endlocal
exit /b
.

Отправлено: 19:01, 09-08-2014 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] BAT - Удаление строк(-и) Ragnazar Скриптовые языки администрирования Windows 1 21-02-2013 14:37
CMD/BAT - Поиск слова в тексте, удаление строки, удаление 8 строк выше и 3 строк ниже Alk-13 Скриптовые языки администрирования Windows 0 10-02-2012 18:06
VBS/WSH/JS - Удаление строк в REG файле gen0m.rsw Скриптовые языки администрирования Windows 9 28-09-2011 18:03
CMD/BAT - Удаление строк gen0m.rsw Скриптовые языки администрирования Windows 2 08-10-2010 12:12
Удаление строк из регфайла... semiono AutoIt 4 21-01-2010 11:06




 
Переход