所以我有这个文件clip.txt,它只包含:
<a href="https://en.wikipedia.org/wiki/Kanye_West">Kanye West</a>,
<a href="http://en.wikipedia.org/wiki/Chris_Martin">Chris Martin</a>
现在我想删除 <...> 之间的所有内容,以便我最终得到
坎耶·韦斯特,克里斯汀·马丁。
使用 perl 我有当前代码:
#!/usr/local/bin/perl
$file = 'clip.txt';
open(FILE, $file);
@lines = <FILE>;
close(FILE);
$line = @lines[0];
while (index($line, "<") != -1) {
my $from = rindex($line, "<");
my $to = rindex($line, ">");
print $from;
print ' - ';
print $to;
print ' ';
print substr($line, $from, $to+1);
print '|'; // to see where the line stops
print "\n";
substr($line, $from, $to+1) = ""; //removes between lines
$counter += 1;
}
print $line;
所有“打印”行都是多余的,但对调试很有用。
现在结果变成:
138 - 141 </a>
|
67 - 125 <a href="http://http://en.wikipedia.org/wiki/Chris_Martin">Chris Martin|
61 - 64 </a>, |
0 - 50 <a href="https://en.wikipedia.org/wiki/Kanye_West">|
Kanye West
首先脚本找到 138 -141 之间的位置,并将其删除。然后它找到 67 - 125 但它删除了 67 - 137。接下来它找到 61 - 64 但它删除了 61 - 66。
为什么这样做?在底线上,它找到了 0 - 64,它完美地删除了。所以我在这里找不到逻辑。