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

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

hxygen 23-10-2010 22:38 1525801

Выбор данных из txt по маске
 
Помогите выбрать данные из txt по следующей маске: xxx.xxx.xxx.xxx думаю несложно догадаться, что это ip. Есть txt в котором много ip и не нужного текста, руками выбирать не годится. После отбора хорошо бы сохранить ip в другой txt. Надеюсь, что это реально.
Заранее спасибо.

amel27 24-10-2010 07:28 1525924

hxygen, типичная задача для регулярных выражений..., в арсенале CMD есть только FindStr, который способен лишь вывести строки, содержащие IP... поэтому, не имея четкого представления о структуре текста браться за парсинг штатными средствами не имеет смысла

ИМХО проще всего реализовать через VBS:
Код:

strFileIn ="1.txt"
strFileOut="2.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set regEx = New RegExp
regEx.Pattern= "\d+\.\d+\.\d+\.\d+"
regEx.Global = True

Set oF = FSO.OpenTextFile(strFileIn,1)
sF = oF.ReadAll
oF.Close

Set Matches = regEx.Execute(sF)
Set oF = FSO.OpenTextFile(strFileOut,2)

For Each Match in Matches
  oF.WriteLine(Match.Value)
Next

...но уж коли заявлена категория CMD приведу вариант на AWK:
Код:

awk -v RS="[^.0-9]+" "/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/" 1.txt >2.txt

Miko 24-10-2010 10:07 1525954

Здравствуйте у меня примерно такая же проблема.

Есть текстовый файл,сколько строк в нем не известно. (Сегодня их 3 завтра 30).
Как мне через Bat файл вытащить нужное.. К примеру:

Start:400
Stop:500

Причем мне нужно вытащить только 400 и 500. (И снова проблема 400 и 500 могут меняться - Числа могут быть разные.).
Получается что мне нужно копировать все что находится после Start:
+ Нужно сохранить 400 в один текстовый файл а 500 в другой.

Кто может помочь?
За ранее спасибо.

hxygen 24-10-2010 14:43 1526185

А не подскажете как VBS пользоваться? Скачал ScIte вставил код, жму скомплить-выдаёт не найден файл.

Всё, Awk прекрасно работает! Спасибо Вам большое!

amel27 24-10-2010 15:52 1526237

Цитата:

Цитата hxygen
не подскажете как VBS пользоваться? »

ничего качать не надо - сохранить в любом текстовом редакторе с расширением VBS, запускать двойным кликом ;)

Цитата:

Цитата Miko
Как мне через Bat файл вытащить нужное.. К примеру:
Start:400
Stop:500»

Код:

@(for /f "tokens=1* delims=: " %%a in ('findstr /birc:" *start:" "in.txt"') do @echo %%b
) >out1.txt

@(for /f "tokens=1* delims=: " %%a in ('findstr /birc:" *stop:" "in.txt"')  do @echo %%b
) >out2.txt

in.txt - входной файл
out1.txt, out2.txt - результат


Время: 00:17.

Время: 00:17.
© OSzone.net 2001-