LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2017|回复: 5

大家帮我看一个perl正则表达式的问题

[复制链接]
发表于 2008-7-27 22:34:00 | 显示全部楼层 |阅读模式
文件每行内容如下:

  1. [ebuild  NS   ] sys-kernel/gentoo-sources-2.6.25-r7  USE="symlink -build" 0 kB
复制代码

perl脚本过滤程序为:

  1.                 chomp; s/\s+$//;
  2.                 my $update = $_; $update =~ s/^\[.*?\] ([^\s]+).*/$1/;
复制代码

目前使用上面的方法出来的结果为:
$_为:

  1. [ebuild  NS   ] sys-kernel/gentoo-sources-2.6.25-r7  USE="symlink -build" 0kB
复制代码

如何过滤后,使
"$_"变为:

  1. [ebuild  NS   ] sys-kernel/gentoo-sources-2.6.25-r7  USE="symlink -build" 0kB
复制代码


$update为:

  1. sys-kernel/gentoo-sources-2.6.25-r7
复制代码


也就是如何修改
s/\s+$//;
语句.
谢谢:Coffee:
发表于 2008-7-29 18:51:04 | 显示全部楼层

  1. s/\s+$//; #去除行末空字符
  2. s/"/\"/g;
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-29 21:45:51 | 显示全部楼层
似乎可以了,谢谢!

不过还有一个小问题,如果碰到%号,如何在前面加\?
也就是文本为:

  1. [ebuild  NS   ] sys-kernel/gentoo-sources-2.6.25-r7  USE="symlink% -build" 0 kB
复制代码

如何过滤后,使
"$_"变为:

  1. [ebuild  NS   ] sys-kernel/gentoo-sources-2.6.25-r7  USE="symlink\% -build" 0kB
复制代码

$update为:

  1. sys-kernel/gentoo-sources-2.6.25-r7
复制代码

谢谢!
回复 支持 反对

使用道具 举报

发表于 2008-7-31 08:13:20 | 显示全部楼层

  1. s/%/\%/g;
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-31 10:33:53 | 显示全部楼层
heejun兄,需要两者结合呀!即需要\",也需要\%,哈哈
回复 支持 反对

使用道具 举报

发表于 2008-9-24 22:10:56 | 显示全部楼层
s/("|%)/\\$1/g;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表