从单行 Perl 脚本中检索值

发布于 2024-10-04 05:50:10 字数 360 浏览 3 评论 0原文

我正在尝试解析输出文件中的某些数据,但在将值返回到 Windows shell 时遇到问题。

我想做的只是使用简单的正则表达式返回一个值,并将其存储到我的 shell 变量中。

我目前有这样的情况:

%VAL% = %PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }'

其中 %VAL% 是我想要返回在 $1 中找到的内容的位置,而 %PERL%指向 perl.exe 的本地副本。

有人可以指出这样做的正确方法吗?

I am attempting to parse an output file for some data, and am having problems returning the value to my Windows shell.

What I am trying to do is simply return a value using a simple regular expression, and store that into my shell variable.

I currently have something like this:

%VAL% = %PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }'

where %VAL% is where I'd like to return what was found in $1, and %PERL% points to a local copy of perl.exe.

Can somebody please point out the proper way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

超可爱的懒熊 2024-10-11 05:50:10

编辑:它比 Unix 有点难看:

for /f "tokens=*" %i in ('perl -e "$tmp=\"Value: 1000\"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }"') do set VAL = %i

或者将 set /p 与中间文件一起使用:

%PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }' > file.txt
set /p VAL = < file.txt
del file.txt

来自 愚蠢的批处理文件技巧

EDIT: It's a bit uglier than Unix:

for /f "tokens=*" %i in ('perl -e "$tmp=\"Value: 1000\"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }"') do set VAL = %i

Or use set /p with an intermediary file:

%PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }' > file.txt
set /p VAL = < file.txt
del file.txt

From Silly Batch File Tricks

水溶 2024-10-11 05:50:10

为什么不在脚本中创建变量?请参阅 win32 perl wiki 上的 env_var

Why don't you create the variable inside the script? see env_var on win32 perl wiki.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文