在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
,但你能给出具体的例子吗?