Я довольно хорошо знаком с PHP, включая командную строку, немного знаком с сценариями BASH, и не имею опыта работы с Perl или другими языками, но готов использовать все, что работает.
Файл HTML, который я пытаюсь проанализировать, содержит более 700 000 строк, 61 МБ. Я не могу изменить источник, который создает таблицу HTML, только загрузить всю таблицу с помощью wget http://10.1.1.2/file.pl.
Вот пример формата HTML-кода, который я пытаюсь проанализировать:
<HTML>
<HEAD>
<TITLE>Objects</TITLE>
<STYLE type="text/css">
a:hover
{
color:red
}
</STYLE>
</HEAD>
<BODY>
<IMG src="http://10.1.1.2/images/logo.gif"/>
<BR/><BR/>
<TABLE border="0">
<TR>
<TH>Objects</TH>
</TR>
<TR>
<TD><HR style="width:227px"></TD>
</TR>
</TABLE>
<table border=1 cellpadding=5 cellspacing=0><tr><th><b>Subtype</b></th><th><b>Object</b> </th></tr>
<tr><td>10GigEthernet</td><td>SNFCCAMK34T-TenGigE0/10/0/0</td></tr>
<tr><td>10GigEthernet</td><td>SNFCCAMK34T-TenGigE0/13/0/0</td></tr>
<tr><td>10GigEthernet</td><td>SNFCCAMK34T-TenGigE0/13/3/0</td></tr>
<tr><td>10GigEthernet</td><td>SNFCCAMK34T-TenGigE0/3/0/0</td></tr>
<tr><td>10GigEthernet</td><td>SNFCCAMK34T-TenGigE0/3/0/0-5</td></tr>
... 700,000 more lines ...
</table> </BODY>
</HTML>
Что бы я хотел в CSV:
Subtype,Object
10GigEthernet,SNFCCAMK34T-TenGigE0/10/0/0
10GigEthernet,SNFCCAMK34T-TenGigE0/13/0/0
10GigEthernet,SNFCCAMK34T-TenGigE0/13/3/0
10GigEthernet,SNFCCAMK34T-TenGigE0/3/0/0
10GigEthernet,SNFCCAMK34T-TenGigE0/3/0/0-5
Буду признателен за любую помощь, которую вы можете оказать! Заранее спасибо.
Результат от кода @ shellter:
# wget http://10.1.1.2/reports/file.pl
--2012-01-19 06:56:59-- http://10.1.1.2/reports/file.pl
Connecting to 10.1.1.2... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified
Saving to: `file.pl'
[ <=> ] 61,000,000 1.01M/s in 58s
2012-01-19 06:58:00 (1.01 MB/s) - `file.pl' saved [61000000]
# sed -n '/<\/td>/{
> s@<tr><td>@@;
> s@</td>@XaYbZc@;
> s@<td>@@;
> s@</td></tr>@@;
> s/XaYbZc/,/
> s/^ //
> p
> }' file.pl > routerList.csv
# ls -l
total 203408
-rw-r--r-- 1 root root 61000000 Jan 19 06:58 file.pl
-rw-r--r-- 1 root root 42708247 Jan 19 06:58 routerList.csv
# head routerList.csv
10GigEthernetn,SNFCCAMK34T-TenGigE0/10/0/0
10GigEthernetn,SNFCCAMK34T-TenGigE0/13/0/0
10GigEthernetn,SNFCCAMK34T-TenGigE0/13/3/0
10GigEthernetn,SNFCCAMK34T-TenGigE0/3/0/0
10GigEthernetn,SNFCCAMK34T-TenGigE0/3/0/0-5