经过四个小时的尝试,我距离开始时并不近。
我正试图在许多html文档的所有链接(没有其他扩展名)的末尾添加.html
。有关我要执行的操作的示例,请参见下面的两个示例链接... 。
我有大量的HTML文件,并且我试图“修复”链接,使其成为内部链接,以便它们都能很好地脱机工作。 (我这样做是为了让我姐姐可以在学习考试时离线使用该网站)。该站点不再在线。
我已经设法完成其中一些操作(使用简单的SED
命令),但是我完全受不了。
第二步将很容易(我将使用带有 maxdepth mindepth 的find来确定文件在目录树中的深度,然后是类似sed 's/https:\\/../../..//g'
的东西),但是我之所以想这样做,是因为我猜测https将使查找需要.html
添加到链接末尾的链接更加容易。
大多数链接都位于href标记中,但并非全部。
我想我将不得不使用某种SED正则表达式,并且由于必须以不同的方式处理不同的链接,因此可能需要多次运行SED。但是SED并不是我的专长。
pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', 'https://www.example.com/learners/levels/2/lessons/13/stories/1','IF77dLwFOP',true,false,'ikd272iAGio');
需要更改为:
pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', ../../../www.example.com/learners/levels/2/lessons/13/stories/1.html','IF77dLwFOP',true,false,'ikd272iAGio');
<a href="https://www.example.com/learners">Home</a> <ul>
必须是:
<a href="../../../www.example.com/learners.html">Home</a> <ul>
如上所述,我知道我将如何执行第二步,但是经过四个小时的尝试,我对第一步的了解还很远。 grep -Poh 'https://www.example[^"]*'
显示URL列表,但我看不出它的用处。我只是不知道如何获得SED
来将.html
放在正确的位置。
任何提示将不胜感激!
答案 0 :(得分:1)
GNU awk解决方案:
awk '{while(match($0, /["\x27]https?:\/\/([^\x27"]*)/, a))$0=substr($0,0,RSTART) "../../../" a[1] (a[1]~"\\.[[:alnum:]]{1,5}$"? "" : ".html") substr($0,RSTART+RLENGTH)}1'
放入单独的行:
awk '{
while(match($0, /["\x27]https?:\/\/([^\x27"]*)/, a)) # while there are still url to replace
$0=substr($0,0,RSTART) "../../../" a[1] (a[1]~"\\.[[:alnum:]]{1,5}$"? "" : ".html") substr($0,RSTART+RLENGTH) }
1' file # 1 for print $0
例如:
$ cat file
pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', 'https://www.example.com/learners/levels/2/lessons/13/stories/1','IF77dLwFOP',true,false,'ikd272iAGio');
<a href="https://www.example.com/learners">Home</a> <ul>
<a href="http://www2.example.com/learner2.html">Home</a> <ul>
<a href="http://www3.example.com/learner3.html">Home</a><br><br><a href="https://www4.example.com/xhtml">Home</a>
whaeverwhatever
$ awk '{while(match($0, /["\x27]https?:\/\/([^\x27"]*)/, a))$0=substr($0,0,RSTART) "../../../" a[1] (a[1]~"\\.[[:alnum:]]{1,5}$"? "" : ".html") substr($0,RSTART+RLENGTH)}1' file
pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', '../../../www.example.com/learners/levels/2/lessons/13/stories/1.html','IF77dLwFOP',true,false,'ikd272iAGio');
<a href="../../../www.example.com/learners.html">Home</a> <ul>
<a href="../../../www2.example.com/learner2.html">Home</a> <ul>
<a href="../../../www3.example.com/learner3.html">Home</a><br><br><a href="../../../www4.example.com/xhtml.html">Home</a>
whaeverwhatever