Показать полную графическую версию : [решено] Замена динамической строки по номеру
Itexz@twitter
08-02-2014, 03:26
Всем привет!
Есть у меня файл, в нем есть строка под номером 57, а в ней <td>60</td>, причем цифра там может быть какой угодно.
Надо получить вместо именно 57ой строки просто <td></td>. При этом не затрагивая предыдущие и следующие строки в которых тоже есть <td></td>
Пытался убрать эту строку через findstr, да как-то не получается...
Если это поможет, то в 56ой строке есть уникальный текст <td>totalTime:</td>
Очень нуждаюсь в помощи, спасибо!
CMD/BAT - Замена динамической строки по номеру »
WSH/PoSH+DOM.
Почти как здесь: http://forum.oszone.net/post-2304237-44.html.
@echo off
for /f %%i in ('find /c /v ""^<"YOUR.TXT"') do set n=%%i
(
for /l %%i in (1 1 %n%) do (
set string=
set /p string=
if %%i==57 (
set /p="<td></td>"<nul
echo.
) else (
if defined string (
call set /p="%%string%%"<nul
if %%i==%n% (
goto:eof
)
)
echo.
)
)
)<"YOUR.TXT">"YOUR_NEW.TXT"
Itexz@twitter
08-02-2014, 12:37
Georgio, к сожалению то что вы написали удаляло много лишнего из файла.
В итоге нашел решение через sed.exe "56,57 d" results.html 1>results_wo_time.html
Sed.exe взял отсюда (http://gnuwin32.sourceforge.net/packages/sed.htm)
Скачал там Binaries и Dependencies. В итоге для работы sed.exe понадобилось 4 файла
libiconv2.dll, libintl3.dll, regex2.dll, sed.exe
<...> удаляло много лишнего из файла .»
Что же такое может удаляться при применении данного кода, если это самый безопасный вариант для пакетных файлов?
Проблема может существовать, насколько я знаю, только со следующими сочетаниями символов:
1) знаки равенства "=" и их сочетание с пробелами в начале строки
2) непарная двойная кавычка """, находящаяся слева от угловых скобок "<" и ">", амперсанда "&" и вертикальной черты "|" (интересно, что если в коде написать set /p string="" или set /p "string=", то всё будет в точности наоборот: "мешать" будет непарная кавычка, находящаяся справа от перечисленных символов)
3) пробелы, составляющие строку.
Первое и второе довольно редко встречается в HTML- и XML-файлах (хотя с таковыми сталкивался), третье практически несущественно. Все такие "плохие" строки в выходном файле обычно эаменяются на пустую строку, т. е. действительно удаляются.
Т. о., выход пока один: для обрабоки с помощью пакетного файла использовать "правильные" документы.
Что же такое может удаляться при применении данного кода, если это самый безопасный вариант для пакетных файлов? »
Georgio, перенаправление ввода/вывода!?
Я потому и предпочитаю использовать WSH в виде VBScript+DOM, потому как там в принципе отсутствует такое понятие, как «escape-последовательность», присущее строкам в пакетных файлах, на JScript и в PowerShell. И заранее не знаешь, где и в каком месте это тебе аукнется при обработке произвольного файла.
Я потому и предпочитаю использовать WSH в виде VBScript+DOM, потому как там в принципе отсутствует такое понятие, как «escape-последовательность», присущее строкам в пакетных файлах, на JScript и в PowerShell. И заранее не знаешь, где и в каком месте это тебе аукнется при обработке произвольного файла. »
Согласен абсолютно, но возможность корректной трансляции содержимого одного текстового файла в другой с помощью пакетных файлов меня интересует именно с теоретической стороны. Что ж, "борьба продолжается"!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.