在我的代码中有一行如下,
my $status = `/usr/bin/ps -ef | grep $_ | grep -v grep | awk '{print\$2}'`;
哪个$ _包含如下字符串,
/home/production/agt/PtpAgent.sh
我可以在执行命令中将$ _输出值更改为'PtpAgent',例如,
my $status = `/usr/bin/ps -ef | grep <some_regex_pattern>$_<some_regex_pattern> | grep -v grep | awk '{print\$2}'`;
答案 0 :(得分:1)
你可以,我建议你使用默认为$ _
的s ///s#.*/(.*?)\.sh$#$1#
您也可以
$_=~s#.*/(.*?)\.sh$#$1#;
或
$_="some text";
我还建议您将管道保持在最低限度,并使用perl进行过滤。它更清洁
my $status = qx(/usr/bin/ps -ef ) ;
$status=~s/.*\n.*?(grep.*?)\n.*/$1/m; #adjust the capture group accordingly
然而,这仅仅是个人偏好。
答案 1 :(得分:1)