【发布时间】:2011-05-25 04:47:00
【问题描述】:
我有一个脚本 (source) 来解析 svn info 来为 Bash 的 $PS1 创建一个合适的字符串。不幸的是,这在我正在使用的运行 Perl 5.8.8 的系统上不起作用 - 它输出所有行而不是仅输出匹配项。 Perl 5.8.8 相当于什么?
__svn_ps1()
{
local result=$(
svn info 2>/dev/null | \
perl -pe 's;^URL: .*?/((trunk)|(branches|tags)/([^/]*)).*;\2\4 ;p')
if [ -n "$result" ]
then
printf "${1:- (%s)}" $result
fi
}
Perl 5.10 的输出仅包含空格、括号、分支名称、标记名称或trunk 之一,以及结束括号。 Perl 5.8.8 的输出(没有最终的p)包含这个加上svn info 输出的每个空格分隔部分的括号版本。
一种可能的解决方法是在svn 和perl 命令之间使用一个简单的grep '^URL: ',但我希望避免这种情况,因为这将针对每个 Bash 提示符执行。
【问题讨论】:
-
你能解释一下你想做什么 - 给出一个输入文件和你期望的输出。
-
也许我听起来像是一张卡住的唱片,但“你能解释一下你想要做什么 - 给出一个输入文件和你期望的输出”。您提出了很多半成品的解决方案,但我无法弄清楚您想要什么。