Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Замена переноса строки на пробел (http://forum.oszone.net/showthread.php?t=165664)

IVV 30-01-2010 15:33 1334288

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

amel27 31-01-2010 06:35 1334706

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

пример для замены CRLF на пробел:
Код:

sfk rep file.txt -spat "/\r\n/ /" -yes

PcDOK 25-02-2010 19:30 1355879

Цитата:

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

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

amel27 26-02-2010 16:09 1356583

Цитата:

Цитата 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

PcDOK 26-02-2010 21:21 1356820

ОТЛИЧНО!!!!
правда приходится использовать и 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" "" ""

Наверно можно было бы как то упростить, но уже и так работает.
СПАСИБО.

amel27 27-02-2010 06:10 1357074

Цитата:

Цитата 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}"
)


PcDOK 27-02-2010 23:52 1357760

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


Время: 09:54.

Время: 09:54.
© OSzone.net 2001-