【发布时间】:2016-12-17 15:28:31
【问题描述】:
我正在寻找这种模式
<!-- Footer part at bottom of page-->
<div id="footer">
<div class="row col-md-2 col-md-offset-5">
<p class="text-muted">© 2014. Core Team</p>
</div>
<div id="downloadlinks">
<!-- downloadlinks go here-->
</div>
</div>
并用这种模式替换许多 .html 文件
<!-- Footer part at bottom of page-->
<div id="footer">
<div class="row col-md-2 col-md-offset-5">
<?php
$year = date("Y");
echo "<p class='text-muted'>© $year. Core Team</p>";
?>
</div>
<div id="downloadlinks">
<!-- downloadlinks go here-->
</div>
</div>
注意区别在于 这个
<p class="text-muted">© 2014. Core Team</p>
替换为
<?php
$year = date("Y");
echo "<p class='text-muted'>© $year. Core Team</p>";
?>
我正在考虑使用sed 来做这件事,但在进行了初步尝试后,我的困难在于我可能会或可能会或可能不必逃脱的角色。还有 php 代码中的制表符或新行,我希望它在这里显示。
有很多文件要做,所以我想自动化它,但手动(复制和粘贴)可能会更快。但在这种情况下,sed 可能是错误的方法。有人可以指导我正确的方向吗?在这个阶段,我愿意接受其他语言(例如 php、python、bash )来寻找解决方案。
然后,我计划将每个 .html 文件重命名为 .php,如下所示:
for i in *.html; do mv "$i" "${i%.*}.php"; done;
编辑1
基于下面的 awk 答案,我可以让它在这个版本下工作
$ awk -Wversion 2>/dev/null || awk --version
GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2, GNU MP 6.0.0)
Copyright (C) 1989, 1991-2014 Free Software Foundation.
但是在这个版本上我得到不同的输出。它似乎打印出 3 个文件,旧的新文件和文件。 这个版本容易纠正吗?
root@4461f768e343:/github/find_pattern# awk -Wversion 2>/dev/null || awk --version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
root@4461f768e343:/github/find_pattern#
root@4461f768e343:/github/find_pattern#
root@4461f768e343:/github/find_pattern# awk -v RS='^$' -v ORS= 'ARGIND==1{old=$0;next} ARGIND==2{new=$0;next} s=index($0,old){ $0 = substr($0,1,s-1) new substr($0,s+length(old))} 1' old new file
<!-- Footer part at bottom of page-->
<div id="footer">
<div class="row col-md-2 col-md-offset-5">
<p class="text-muted">© 2014. Core Team</p>
</div>
<div id="downloadlinks">
<!-- downloadlinks go here-->
</div>
</div><!-- Footer part at bottom of page-->
<div id="footer">
<div class="row col-md-2 col-md-offset-5">
<?php
$year = date("Y");
echo "<p class='text-muted'>© $year. Core Team</p>";
?>
</div>
<div id="downloadlinks">
<!-- downloadlinks go here-->
</div>
</div>some pile of text
or other
<!-- Footer part at bottom of page-->
<div id="footer">
<div class="row col-md-2 col-md-offset-5">
<p class="text-muted">© 2014. Core Team</p>
</div>
<div id="downloadlinks">
<!-- downloadlinks go here-->
</div>
</div>
and more maybe.root@4461f768e343:/github/find_pattern#
【问题讨论】:
-
我建议使用 XML/HTML 解析器 (xmllint, xmlstarlet ...) 因为only Chuck Norris can parse HTML with regex。