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

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

Ответить
Настройки темы
CMD/BAT - [решено] Замена переноса строки на пробел
IVV IVV вне форума

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


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

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


Необходимо написать BAT-файл, который будет заменять во внешнем файле все переносы строки на пробелы. Главная проблема в том, что в файле более 9000 строк

Отправлено: 15:33, 30-01-2010

 

Googler


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

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


Windows не имеет своих инструментов командной строки для работы с текстовыми файлами произвольного содержания, поэтому приходится использовать сторонние утилиты... например, Swiss File Knife - продвинутый текстовый процессор командной строки

пример для замены CRLF на пробел:
Код: Выделить весь код
sfk rep file.txt -spat "/\r\n/ /" -yes
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:35, 31-01-2010 | #2



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

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


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


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

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


Цитата:
Swiss File Knife - продвинутый текстовый процессор командной строки
приятно удивил. Возможностей много. Спасибо.

Подскажите как (возможно ли это) при замене текста, добавлять число, что то типа счетчика замен.
Чтобы к каждой замене добавлялась цифра
примено так :
заменить user- при каждой замене на user-1, user-2 ....user-n

Отправлено: 19:30, 25-02-2010 | #3


Googler


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

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


Цитата PcDOK:
заменить user- при каждой замене на user-1, user-2 ....user-n »
через SFK имхо не выйдет - логика слабовата, вариант через AWK:
Код: Выделить весь код
awk -v RS="user-" -v ORS="" "{if (NR>1) print RS NR-1;print}" TEST.TXT

Отправлено: 16:09, 26-02-2010 | #4


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


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

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


ОТЛИЧНО!!!!
правда приходится использовать и sfk и AWK, но работает.
вот
что получилось
(скрипт считывает какие адреса выдал DHCP сервер, и делает файл install-dhcp.bat , который привязывает МАС адрес к IP адресу.)


Код: Выделить весь код
set IPP=192.168.0. 
set FF=install-dhcp.bat 
set FFD=dump.tmp 
set FFD2=dump2.tmp 

netsh dhcp server scope %IPP%0 show clients > dump.tmp
sfk  filter %FFD% > %FFD2%  "-ls+%IPP%*" -spat -rep "_-??.??.???? *-D_\"comp\" \"\" \"\"_" -rep "_- NEVER *-D_\"comp\" \"\" \"\"_"  -rep "_- 255.255.255.0__"  -rep "_-__" 
sfk replace %FFD2%  "/%IPP%/netsh dhcp server scope %IPP%0 add reservedip %IPP%/" -yes  

awk -v RS="comp" -v ORS="" "{if (NR>1) print RS NR-1;print}"  %FFD2% > %FF%
после
Код: Выделить весь код
 netsh dhcp server scope %IPP%0 show clients > dump.tmp
получаю файл dump.tmp вида:

Код: Выделить весь код
 Контекст текущей области изменен на область 192.168.0.0.  

Тип: N - NONE, D - DHCP B - BOOTP, U - UNSPECIFIED, R - RESERVATION IP
==================================================================================
  IP-адрес       - Маска подсети  - Уникальный код (ID) - Срок действия        - Тип ==================================================================================
  192.168.0.41    - 255.255.255.0  -00-80-48-29-8f-29   - NEVER EXPIRES        -D 
192.168.0.210   - 255.255.255.0  - 00-0f-3d-cc-45-db   -05.03.2010 8:05:10     -D 
192.168.0.211   - 255.255.255.0  -00-03-47-7a-3c-22   - NEVER EXPIRES        -D 
192.168.0.212   - 255.255.255.0  - 00-24-8c-d7-c2-f0   -05.03.2010 9:06:29     -D 
192.168.0.213   - 255.255.255.0  - 00-c0-26-2e-3f-be   -05.03.2010 7:59:29     -D 
192.168.0.216   - 255.255.255.0  -00-e0-4c-32-7f-d0   - NEVER EXPIRES        -D 
192.168.0.217   - 255.255.255.0  - 00-18-f3-0e-29-a4   -05.03.2010 8:18:16     -D 
192.168.0.218   - 255.255.255.0  - 00-18-f3-7a-4e-55   -26.02.2010 10:34:49    -D 
192.168.0.219   - 255.255.255.0  - 00-18-f3-0e-4a-bd   -05.03.2010 10:28:28    -D 
192.168.0.220   - 255.255.255.0  - 00-18-f3-0e-29-28   -05.03.2010 9:55:59     -D 
192.168.0.221   - 255.255.255.0  -00-0d-88-39-b6-1e   - NEVER EXPIRES        -D 
192.168.0.222   - 255.255.255.0  -00-0f-ea-1b-fd-27   - NEVER EXPIRES        -D  

Число клиентов (версии 4): 12 в области : 192.168.0.0.  
Команда успешно завершена.
а после всех манипуляций получаю
Код: Выделить весь код
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.41      008048298f29   "comp1" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.210      000f3dcc45db   "comp2" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.211     0003477a3c22   "comp3" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.212      00248cd7c2f0   "comp4" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.213      00c0262e3fbe   "comp5" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.216     00e04c327fd0   "comp6" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.217      0018f30e29a4   "comp7" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.218      0018f37a4e55   "comp8" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.219      0018f30e4abd   "comp9" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.220      0018f30e2928   "comp10" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.221     000d8839b61e   "comp11" "" ""
netsh dhcp server scope 192.168.0.0 add reservedip 192.168.0.222     000fea1bfd27   "comp12" "" ""
Наверно можно было бы как то упростить, но уже и так работает.
СПАСИБО.

Отправлено: 21:21, 26-02-2010 | #5


Googler


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

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


Цитата PcDOK:
приходится использовать и sfk и AWK »
в разборе текста AWK самодостаточен, где-то так:
Код: Выделить весь код
set IPP=192.168.0.0
set FF=install-dhcp.bat 

>%FF% (netsh dhcp server scope %IPP% show clients|^
awk -v FS="[ -]+" -v Q="\"" "$1~/^[0-9]/ {N+=1;print \"netsh dhcp server scope %IPP% add reservedip \"$1\" \"$3$4$5$6$7$8\" \"Q\"comp\"N Q\" \"Q Q\" \"Q Q}"
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:10, 27-02-2010 | #6


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


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

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


ОГРОМНОЕ спасибо, исключительный пример программирования и знания предмета.
(буду учить мат.часть )

Отправлено: 23:52, 27-02-2010 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] как в конце строки удалить пробел akrav Скриптовые языки администрирования Windows 11 08-10-2024 00:29
MySQL - Автозамена строки из другой строки - trigger? procedure ? BugZZ Программирование и базы данных 0 18-09-2009 09:51
RAID - Замена RAID на IDE ПОСЛЕ переноса диска без переустановки WinXP poklad Накопители (SSD, HDD, USB Flash) 1 13-04-2009 09:30
CMD/BAT - [решено] Как убрать пробел в конце строки Tjmike Скриптовые языки администрирования Windows 2 11-02-2009 09:34
php функция переноса строки без учета пробела dima1981 Вебмастеру 5 16-11-2008 10:29




 
Переход