我想用<span class='i'> </span>
替换<i> </i>
的实例,因为我决定以这种方式格式化我的网页。所以我提出了这个命令:
perl -pe "s/<span +class *= *['\"]i['\"] *>(.*?)<\/span>/<i>\1<\/i>/g"
我可以让它更精细,但我真的不认为有像< / span>
这样奇怪形成的标签或其他任何东西,所以我会留下它。它确实有一个非贪婪的捕获,这就是我使用perl -p
而不是sed
的原因。
因此,这将输出正确修改的行,但我不确定通过此命令发送多个文件的最佳方法。如果我希望所有pages/*.html
都修复span class='i'
标记,那么最好的方法是什么?除了for循环之外,bash是否为这样做提供了一些条款?
答案 0 :(得分:2)
以下内容将遍历pages/
中的所有html文件,并使用perl脚本进行就地编辑。
#!/bin/bash
for file in pages/*.html; do
perl -pi -e "s/<span +class *= *['\"]i['\"] *>(.*?)<\/span>/<i>\1<\/i>/g" "$file"
done
答案 1 :(得分:2)
@Steven,根据您对@SiegeX的回答,以下内容可以正常使用:
perl -pi -e "s/<span +class *= *['\"]i['\"] *>(.*?)<\/span>/<i>\1<\/i>/g" *.html
我会让Perl创建文件备份,因此将第一部分更改为
perl -pi.bak -e ...