免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123456
最近访问板块 发新帖
楼主: luo118
打印 上一主题 下一主题

sed 匹配网站问题 (已解决) [复制链接]

论坛徽章:
0
51 [报告]
发表于 2010-06-01 17:59 |只看该作者
本帖最后由 luo118 于 2010-06-01 18:40 编辑

  1.         <VirtualHost *:80>
  2.         ServerAdmin webmaster@test.com
  3.         ServerName test.com
  4.         ServerAlias www.test.com
  5.         ErrorLog logs/test.com-error_log
  6.         TransferLog logs/test.com-access_log
  7.         </VirtualHost>

  8.         <VirtualHost *:80>
  9.         ServerAdmin webmaster@abc.com
  10.         DocumentRoot /home/vhost/abc/public_html
  11.         ServerName abc.com
  12.         ServerAlias www.abc.com
  13.         ErrorLog logs/abc.com-error_log
  14.         TransferLog logs/abc.com-access_log
  15.         </VirtualHost>
复制代码
当内容<VirtualHost *:80>和 </VirtualHost> 前面有空格或tab符时, 我如下命令删除不了虚拟主机
请搞手指教
sed -e '/<VirtualHost/,/<\/VirtualHost>$/{H;/<\/VirtualHost>$/!d}' -e 'x;/test.com/d;/<\/VirtualHost>$/d'

论坛徽章:
0
52 [报告]
发表于 2010-06-01 18:04 |只看该作者
本帖最后由 luo118 于 2010-06-01 18:08 编辑
回复  luo118 第一部分把虚拟主机的内容存到缓冲空间,第二部分判断虚拟主机里是否包含abc.com,包含则打印 ...
where27 发表于 2010-05-01 14:04



    但是使用
sed -e '/</,/Host>$/{H;//!d}' -e 'x;/abc.com/!d' file  可以显示出来,
删除时,删除时,删除不了,

论坛徽章:
0
53 [报告]
发表于 2010-06-01 19:29 |只看该作者
回复 52# luo118


   什么意思啊?说清楚一点

论坛徽章:
0
54 [报告]
发表于 2010-06-01 19:57 |只看该作者
意思是如 51楼,
<VirtualHost *:80>和</VirtualHost> 前面有空格或tab符时,
sed -e '/<VirtualHost/,/<\/VirtualHost>$/{H;/<\/VirtualHost>$/!d}' -e 'x;/test.com/d;/<\/VirtualHost>$/d'
这样删除不了,但是这个指令在前面没有空格,有空行的情况下正常,

如用 你回复的6楼的指令
sed -e '/</,/Host>$/{H;//!d}' -e 'x;/abc.com/!d' file  #<VirtualHost *:80>和</VirtualHost> 前面有空格都可以显示出来,

现在我要解决的问题是
sed -e '/</,/Host>$/{H;//!d}' -e 'x;/abc.com/!d' file #像这指令一样,显示改为删除
要求不管有没有空行,不管<VirtualHost *:80>和</VirtualHost> 前面是否有空格都删除。这是我想要的。

论坛徽章:
0
55 [报告]
发表于 2010-06-02 11:28 |只看该作者
还有一个问题,匹配不了域名唯一性

sed -e '/</,/Host>$/{H;//!d}' -e 'x;/abc.com/!d' file  
这指令把abc.com.hk 和 abc.com 都输出出来了,

如我加个$结束,什么都没有显示

sed -e '/</,/Host>$/{H;//!d}' -e 'x;/abc.com$/!d' file

论坛徽章:
0
56 [报告]
发表于 2010-08-03 12:14 |只看该作者

sed -n '/@abc\.com/{x;p;x};/abc\.com/,/VirtualHost/p;h' file
sed -e '/./{H;$!d;}' -e 'x;/abc.com/!d;' file

这几条写的可够悬乎
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP