PDA

Показать полную графическую версию : [решено] Парсить текст.


WoW
15-02-2012, 16:25
root,second,green,blue
end,start,yes,welcome

Нужно парсить второе и третье слово из строки, чтобы получилось так:

second,green
start,yes

Iska
15-02-2012, 16:52
Из командной строки:
for /f "tokens=2,3 delims=," %i in (file.txt) do @echo %i,%j

WoW
15-02-2012, 18:26
Iska, спасибо.

Можно еще помощь, если между словами разный разделитель.
root,second;green.blue:red
Получить так:
second;green:red

Iska
15-02-2012, 21:32
Какие здесь:
root,second;green.blue:red »
разделители?

WoW
18-02-2012, 19:54
Такие как: запятая, точка с запятой, точка, двоеточие.
В первом вопросе, слова разделял только знак: запятая.

Iska
18-02-2012, 23:44
Ясно.

Тогда разъясните, каким образом из
root,second;green.blue:red
может получиться:
second;green:red
если изначально Вы пишете о:
…второе и третье слово из строки, »

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

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

Iska
19-02-2012, 02:23
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
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
Только такая ошибка… »
Я привёл код для применения непосредственно из командной строки. В случае его использования в пакетном файле символы «%» при переменных цикла нужно удваивать. Что Вы, собственно, и верно сделали.

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




© OSzone.net 2001-2012