我有多个html
个文件。其中,访问键设置为next
和previous
页面。这两个页面的链接放在页眉和页脚中。由于两面性,accesskey无法正常工作(即打开页面)。
解决方案是从标头中删除链接。标题写在一行中,因此我要删除的两个链接位于第二行。
因为它包含要打开的文件的名称,所以我需要为这些文件名创建var
或者创建一些其他更复杂的命令(以下命令用于将所有文件重命名为###
{000..999})。我不知道以下复杂的cmd是否会改变html
文件的输出名称(这是不可取的)
$ ls *.html | awk 'BEGIN{ a=0 }{ printf "sed -i '2!b;s/<a accesskey="p" href="%s">Prev</a>/' *.html %s\n", $0, a++ }' | bash
仅sed
cmds(为清晰起见):
$ sed -i '2!b;s/<a accesskey="p" href="%s">Prev</a>/' *.html
$ sed -i '2!b;s/<a accesskey="n" href="%s">Next</a>/' *.html
如何实现这一目标?我尝试搜索网站(可能我只是不知道如何描述这个),尝试了许多带有很多选项的命令,但我无法得到它:)
更新#2
样本输入
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<html xmlns="http://www.w3.org/1999/xhtml"><td width="20%" align="left"><a accesskey="j" href="contrastchapter.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Contrasts</th><td width="20%" align="right"> <a accesskey="k" href="ch03s02.html">Next</a></td></tr></table><hr/>
相同的样本输出
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<html xmlns="http://www.w3.org/1999/xhtml"><td width="20%" align="left"></td><th width="60%" align="center">Chapter 3. Contrasts</th><td width="20%" align="right"></td></tr></table><hr/>
答案 0 :(得分:1)
我不确定你要做什么。你的shell示例不会执行。 我想删除想想,例如
<a accesskey="j" href="contrastchapter.html">Prev</a>
和
<a accesskey="k" href="ch03s02.html">Next</a>
在你的html文件的第2行。
如果是这样,为什么不尝试
#!/bin/sh
ls *.html | while read line
do
sed -i ' 1,2 {
s:<a accesskey="j" href="[[:alnum:].]*">Prev</a>::
s:<a accesskey="k" href="[[:alnum:].]*">Next</a>::
}' $line
done
我假设文件名由字母数字或句号组成......你可能需要调整一下