Компьютерный форум 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=227929)

WoW 15-02-2012 16:25 1859453

Парсить текст.
 
Цитата:

root,second,green,blue
end,start,yes,welcome
Нужно парсить второе и третье слово из строки, чтобы получилось так:

Цитата:

second,green
start,yes

Iska 15-02-2012 16:52 1859479

Из командной строки:
Код:

for /f "tokens=2,3 delims=," %i in (file.txt) do @echo %i,%j

WoW 15-02-2012 18:26 1859558

Iska, спасибо.

Можно еще помощь, если между словами разный разделитель.
Цитата:

root,second;green.blue:red
Получить так:
Цитата:

second;green:red

Iska 15-02-2012 21:32 1859710

Какие здесь:
Цитата:

Цитата WoW
Код:

root,second;green.blue:red
»

разделители?

WoW 18-02-2012 19:54 1861557

Такие как: запятая, точка с запятой, точка, двоеточие.
В первом вопросе, слова разделял только знак: запятая.

Iska 18-02-2012 23:44 1861707

Ясно.

Тогда разъясните, каким образом из
Код:

root,second;green.blue:red
может получиться:
Код:

second;green:red
если изначально Вы пишете о:
Цитата:

Цитата WoW
…второе и третье слово из строки, »

Определитесь в своих требованиях.

WoW 19-02-2012 01:36 1861743

Iska, это "…второе и третье слово из строки" к первому вопросу было. Второй вопрос, просто примером спросил. Не подумал, что надо было описать (второе, третье, пятое), извините.

Iska 19-02-2012 02:23 1861762

WoW, с этим ясно.

Тогда достаточно в предыдущем примере указать несколько разделителей и соответствующие элементы:
Код:

for /f "tokens=2,3,5 delims=,;.:" %i in (file.txt) do @echo %i,%j,%k
Цитата:

Код:

second,green,red

Проблема возникает с получаемыми разделителями, ибо в коде они указаны напрямую:
Код:

echo %i,%j,%k
и нет возможности получить их прозрачно из исходного файла. Вам такое подходит?

WoW 19-02-2012 03:03 1861775

Iska, подходит. Спасибо!

Только такая ошибка:
Цитата:

Непредвиденное появление: i.
C:\>for /f "tokens=2,3,5 delims=,;.:" i,k
Если так, то нормально:
Цитата:

for /f "tokens=2,3,5 delims=,;.:" %%i in (file.txt) do @echo %%i,%%j,%%k

Iska 19-02-2012 03:39 1861782

Цитата:

Цитата WoW
Только такая ошибка… »

Я привёл код для применения непосредственно из командной строки. В случае его использования в пакетном файле символы «%» при переменных цикла нужно удваивать. Что Вы, собственно, и верно сделали.

Внутри пакетного файла можно убрать и подавление вывода команды «@» — при «… do @echo %%i,…» — если используется «echo off» в начале пакетного файла.


Время: 18:36.

Время: 18:36.
© OSzone.net 2001-