【问题标题】:Remove a string of html code with variable in multiple files删除多个文件中带有变量的一串html代码
【发布时间】:2014-04-16 19:11:09
【问题描述】:

我有多个 html 文件。其中,访问键设置为nextprevious 页面。这两个页面的链接放置在页眉和页脚中。由于重复,访问密钥无法正常工作(即打开页面)。

解决方案是从标题中删除链接。表头写在一行,所以我要删除的两个链接在第二行。

因为它包含要打开的文件的名称,所以我需要为这些文件名创建一个 var 或其他更复杂的命令(以下是我用来将所有文件重命名为 @987654325 @ {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/>

【问题讨论】:

  • 样本输入和预期输出会有所帮助

标签: html sed var


【解决方案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

我假设文件名由字母数字或句点组成...您可能需要对此进行调整

【讨论】:

  • 您确实理解正确。而且您的脚本运行良好。谢谢。
猜你喜欢
  • 2013-06-07
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多