лучший способ извлечь строку из пакета файлов - PullRequest
0 голосов
/ 30 ноября 2011

Мне нужно обработать более 300 файлов HTML, извлечь строку из каждого и поместить ее в отдельный текстовый файл для последующего импорта. верх: формат строки в каждом файле идентичен и также +/- две строки с одинаковой позиции.

Я подумал, что, возможно, использую Python, но потом подумал, что PERL мог бы быть лучше, так как эта игра играет на заднем дворе.

к сожалению, у меня нет доступа к UNIX / LINUX, или я бы просто сказал ...

это такой странный запрос клиента, что я немного ошеломлен банкоматом.

так: каков наилучший способ извлечь целевую строку из пакета файлов?

WR!

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Еще один отличный способ получить массу функциональных возможностей * nix в Windows - Cygwin http://www.cygwin.com

1 голос
/ 30 ноября 2011

Если вы дадите нам более подробную информацию (т.е. путь и имя файлов, строку, которую вы хотите извлечь, и т. Д.), Возможно, я могу написать пакетный файл .BAT Windows для решения этой задачи ...

РЕДАКТИРОВАТЬ

Чтобы написать Batch-файл, который успешно запускается, мне нужна пара дополнительных данных, поэтому я сделал некоторые предположения.Вы можете помочь мне исправить детали.Это мой метод:

  1. Ищите строку, содержащую "> Текстовую ссылку <".Я полагаю, что есть только один;это может быть исправлено. </li>
  2. Прочитайте следующую строку.Я предположил, что каждый td расположен в независимых строках;это может быть исправлено.
  3. В этой строке удалите текст от начала строки до строки value.
  4. Замените кавычки на $ (следующий шаг не может обработать кавычки).
  5. Получить текст между $;это результат. Команда

for /F skip... может прочитать неправильную строку, если файл содержит пустые строки;это может быть исправлено.

@echo off
setlocal DisableDelayedExpansion
findstr /n ">Text link<" thefile.htm > linefound.tmp
for /F "delims=:" %%a in (linefound.tmp) do set lineNo=%%a
for /F "skip=%lineNo% delims=" %%a in (thefile.htm) do (
    set "theLine=%%a"
    goto continue
)
:continue
setlocal EnableDelayedExpansion
set theLine=!theLine:*value=!
set theLine=!theLine:"=$!
for /F "tokens=2 delims=$" %%a in ("!theLine!") do set URL=%%a
echo Result: %URL%

РЕДАКТ.2

Вы меня смущаете.Сработал первый код или нет?Второй пример, который вы разместили в комментариях, похоже, не связан с первым (данные находятся во втором <td> или после [url=http://?).Это та же проблема или другая?Пожалуйста, не думайте, что я знаю о формате файла HTML (не знаю).Я действительно знаю о пакетных файлах, но я не могу догадаться, что делать, если у меня нет полной информации ...

В следующем пакетном файле показано все, что находится в квадратных скобках в той же строке, что и [url=http:// строка в файле, указанная в первом параметре:

@echo off
for /F "tokens=2 delims=[]" %%a in ('findstr /n "[url=http://" %1') do echo %%a
1 голос
/ 30 ноября 2011

Поскольку вы уже знакомы с Grep, почему бы не использовать порт Windows, например Grep в GnuWin32 ?

...