![]() |
Удалить все знаки в строке после ;
Есть текст, который нужно привести в надлежащий вид, для этого нужно удалить все знаки после ; т.е. неудаляем;не удаляем;здесь удаляем весь текст после ; и точку с запятой тоже. Возможно ли такое?
Заранее спасибо. |
hxygen,
Код:
@Echo Off |
Для того чтобы привести текст в наждежащий вид не обязательно пользоваться исключительно cmd-скриптами. WSH и PS более полноценно работают с файлами и текстом. Ну и множество текстовых редактором позворяет производить массовые поиск, замену и т.п.
Регулярными выражениями это запишется примерно как замена (^.*);[^;]* на \1 El Sanchez, For поделит по первому знаку-разделителю, а hxygen'у, судя по примеру, требуется убирать всё, что после последнего. Ко всему прочему надо было просто echo %%A, а в таком виде файл не меняется. |
|
до кучи, вариант штатными средствами (увы, только посимвольно):
Код:
@echo off |
Спасибо всем, но amel27 отдельное мерси =) Awk не первый раз выручает.
|
Вдогонку...:)
Busla, Цитата:
hxygen, ну а если нужна рекурсия,то Код:
@Echo Off |
Цитата:
Код:
@Echo Off - удаляются пустые строки - удаляются множественные ";" (";;;" -> ";") - удаляются символы "!"/ текст между "!" |
amel27, Можно тоже самое, только чтобы удалял текст ДО ИСКОМОГО СЛОВА ??? *(до FIND "...")
Код:
@echo off SETLOCAL DisableDelayedExpansion (for /f "usebackq delims=" %%l in ("1.txt") do (set "$l=%%l" SETLOCAL EnableDelayedExpansion set $l|find ";">nul&& call :TRIM echo.!$l! ENDLOCAL )) >2.txt ENDLOCAL& EXIT :TRIM set "$c=!$l:~-1!"& set "$l=!$l:~,-1!" if not "!$c!"==";" goto TRIM GoTo :EOF |
Цитата:
Код:
@echo off |
amel27, Что-то батник этот не действует, я попробовал точную копию, мой файл остаётся неизменным, дописал в код
ENDLOCAL))>C:\DEL2.txt ENDLOCAL И он просто копирует всё из файла 1.txt который обрабатывает. Заполняю вроде всё правильно "set word=buy", слов buy содержится в файле 1.txt, но ничего не делается=( |
Цитата:
давайте предметно - пример файла + код (если правили) |
Время: 22:58. |
Время: 22:58.
© OSzone.net 2001-