LinuxSir.cn,穿越时空的Linuxsir!

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

环视

[复制链接]
发表于 2008-10-23 18:55:26 | 显示全部楼层 |阅读模式
要从以下文本中取出pkgver=和pkgrel=后的版本号

# Contributor: Michal Krenek <mikos@sg1.cz>
# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
pkgname=aurscripts
pkgver=1.0.5
pkgrel=2
arch=('any')
pkgdesc="Tools for more comfortable work with Arch User Repository (AUR)"
url="http://wiki.archlinux.org/index.php/AUR_User_Guidelines"
license=('GPL')
depends=('bash')
source=(aurdownload aurupdate aurcreate)
md5sums=('51919ebf2e6986f72a566b2d45c634fe' 'f4f8af1077a6976e02ba8a21f5f1d302'\
         '371227e5311b2541f3f4d6265863f6ab')

build() {
  cd $startdir/src
  install -d $startdir/pkg/usr/bin
  install -m 755 * $startdir/pkg/usr/bin/
}

用perl -pe "m/^(?=pkgver=)[0-9a-z](.[0-9a-z])*$/" PKGBUILD却得到了所有行,为什么会失败?
发表于 2008-10-23 20:45:39 | 显示全部楼层
  1. perl -e 'while(<>){print $_ if m/^(?>pkgver=)[0-9a-z](.[0-9a-z])*$/;}'  <PKGBUILD
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-23 22:59:22 | 显示全部楼层
谢啦,还想问下有支持环视的非交互式文本编辑器吗
回复 支持 反对

使用道具 举报

发表于 2008-10-24 11:17:53 | 显示全部楼层
eval $(grep pkgver $file);echo $pkgver

不就取出来了吗?不明白楼主啥意思?不知道啥事环视!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 14:03:28 | 显示全部楼层
环视就是通过一些字符定位到某个位置,不匹配字符,是^、$的增强。
这里的确滥用了,只是想练习下。
回复 支持 反对

使用道具 举报

发表于 2008-10-24 15:32:10 | 显示全部楼层
拗口的说。
还是不理解,貌似sed是不支持环视了?我在学的时候就没有接触这个概念。

“环视就是通过一些字符定位到某个位置,不匹配字符,是^、$的增强。”
^ $原则上也是匹配嘛。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 19:19:58 | 显示全部楼层
恩,的确措辞不当。换句话说,环视结构不匹配任何字符,只匹配文本中的特定位置。
在这个例子里,(?>pkgver=)匹配的是pkgver=与后面字符之间的位置。
回复 支持 反对

使用道具 举报

发表于 2008-11-25 18:43:25 | 显示全部楼层
他所说的环视应该是指正则表达式里面的说法吧。不知理解对否?呵呵
回复 支持 反对

使用道具 举报

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

本版积分规则

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