在unix中,将特定文本放在文件末尾
我使用在unix中,将特定文本放在文件末尾,unix,Unix,我使用wget检索了一个html文件。我想把所有链接,即所有,放在文件的末尾。可能吗 例如,考虑以下文件: <tr style="background-color: #EFEFEF"> <td valign="top">Line1<br />2013.05.23</td> <td>Line2 <br /><a href="link.html">link</a> <
wget
检索了一个html文件。我想把所有链接,即所有
,放在文件的末尾。可能吗
例如,考虑以下文件:
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br /><a href="link.html">link</a>
<br />Line3
</td>
</tr>
第1行
2013.05.23
第2行
第3行
我想将文本改为:
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br />
<br />Line3
</td>
</tr>
<a href="link.html">link</a>
第1行
2013.05.23
第2行
第3行
对于示例数据中的简单锚定标记,此Perl脚本足以:
#!/usr/bin/env perl
use strict;
use warnings;
my @urls = ();
while (<>)
{
chomp;
if (m/\s*(<a\s+[^>]+>.*<\/a>)\s*/)
{
push @urls, $1;
s///;
}
print "$_\n";
}
foreach my $url (@urls)
{
print "$url\n";
}
示例输出:
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br />
<br />Line3
</td>
</tr>
<a href="link.html">link</a>
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br />
<br />Line3
</td>
</tr>
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br /> extraneous material other notes
<br />Line3
</td>
</tr>
<a href="link.html">link</a>
<a href="link2.html">link</a>
<a href="link3.html">link</a>
<a href="link4.html">link</a>
第1行
2013.05.23
第2行
第3行
第1行
2013.05.23
第2行
无关材料其他注释
第3行
您可以判断这是否足以满足您的目的。至少它为您提供了一些工作。对于示例数据中的简单锚定标记,此Perl脚本足以:
#!/usr/bin/env perl
use strict;
use warnings;
my @urls = ();
while (<>)
{
chomp;
if (m/\s*(<a\s+[^>]+>.*<\/a>)\s*/)
{
push @urls, $1;
s///;
}
print "$_\n";
}
foreach my $url (@urls)
{
print "$url\n";
}
示例输出:
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br />
<br />Line3
</td>
</tr>
<a href="link.html">link</a>
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br />
<br />Line3
</td>
</tr>
<tr style="background-color: #EFEFEF">
<td valign="top">Line1<br />2013.05.23</td>
<td>Line2
<br /> extraneous material other notes
<br />Line3
</td>
</tr>
<a href="link.html">link</a>
<a href="link2.html">link</a>
<a href="link3.html">link</a>
<a href="link4.html">link</a>
第1行
2013.05.23
第2行
第3行
第1行
2013.05.23
第2行
无关材料其他注释
第3行
您可以判断这是否足以满足您的目的。至少它给了你一些可以处理的东西。如果你只是想复制(而不是移动)文件末尾的链接,你可以做一个简单的grep
(当然可能不适用于特殊情况):
grep-o-P'(如果您只想复制(而不是移动)文件末尾的链接,您可以执行一个简单的
grep
(当然可能不适用于特殊情况):
<代码> GRP-O-P′(你有没有尝试过什么具体的方法?可能是XSLT……是的,这是可能的。它可能是不明智的。你愿意考虑哪些工具?Perl有用于解析HTML的模块;Python也一样。你可以尝试用<代码> AWK < /代码>进行游戏,但这很可能是弥赛亚。(不建议使用正则表达式解析HTML)我更喜欢<代码> AWK < /Cord>,但是你能给出具体的例子吗?你尝试过什么具体的方法吗?一个合适的方法可能会涉及XSLT……是的,这是可能的。它可能是不明智的。你愿意考虑哪些工具?Perl有用于解析HTML的模块;Python也可以。你可以尝试用<代码> AWK < /代码>的游戏,但这很有可能。我更喜欢awk
,但你能给出具体的例子吗?