sed中的多行匹配,可以用N,N的意思是把下一行写入保持空间,保持空间可能不好理解,可以理解为机器的内存一样,把一下行也写入内存,可能会好理解多了,当把一下行也写入保持空间的时间,转行符"\n",也可以用.*匹配到了,前几天在帮开发做全局替换,在一对php标签中,替换里面的两行内容,其他有两个字段组合起来就是整个页面都是唯一的
<?php
$_web = str_replace(array('s-','www.'),'',$_web);\
$_webcontents = file_get_contents("http://test.com/index.php?url=".$_web);
?>
内容大概就是上面的东西
替换脚本
#!/bin/bash
cd /usr/local/nginx/html/mytest/
for i in `ls -d test*`
do
grep file_get_contents ${i}/vip.dwt &>/dev/null && s=0||s=1
if [ $s -eq 0 ];then
sed -i '
/<\?php/{ ###匹配<?php
N ###把下一行写入保持空间,(用内存表达会好理解些)
/<\?php.*str_replace/{ ###然后再把<?php与这么里的关键字进行匹配,这里的.*已经可以匹配到"\n"
N