我有一个问题,我试图从运行反引号的输出中提取一个文件名,我的代码如下:
$var = `munpack -f filename`;
如果有人熟悉 mpack,输出将类似于:
tempdesc.txt: File exists
file_20130620.zip (application/octet-stream)
我试图只获取文件名,但是,我所有尝试的正则表达式都失败了。我什至尝试删除换行符,然后尝试处理信息,但我不能。我认为它们可能只是空格并删除空格,但那些正则表达式失败了。我可以浏览并列出我尝试提取此数据的每个正则表达式,如有必要,我可以提供,但也许有人有一些可以工作的东西。我无法生成任何 id 喜欢的匹配项,也无法以任何方式更改输出。因此,为了清楚起见,我正在寻找可以输出文件名的东西,例如:file_20130620.zip
输出给出的一些建议:
$var =~ m{^(.+?)\(}m and print "$1\n";
output:
tempdesc.txt: File exists
file_20130620.zip
($filename) = $var =~ /(?s:.*\n)?(.*) \([^)]+\)\n/;
output:
tempdesc.txt: File exists
file_20130620.zip
if($var =~/\S+: [^\n]+\n(\S+) [^\n]+\n/) { printf $1; }
output:
tempdesc.txt: File exists
每次修复:
$var = `munpack -f filename 2>/dev/null`; #will remove 'tempdesc.txt: File exists'