Regex perl脚本下的执行命令中的Alter$\uu
在我的代码中,有一行如下所示Regex perl脚本下的执行命令中的Alter$\uu,regex,string,perl,Regex,String,Perl,在我的代码中,有一行如下所示 my $status = `/usr/bin/ps -ef | grep $_ | grep -v grep | awk '{print\$2}'`; 其中$\包含如下字符串 my $status = `/usr/bin/ps -ef | grep $_ | grep -v grep | awk '{print\$2}'`; /主页/制作/agt/PtpAgent.sh 例如,我可以在执行命令中将$输出值更改为“PtpAgent”吗 my $status = `
my $status = `/usr/bin/ps -ef | grep $_ | grep -v grep | awk '{print\$2}'`;
其中$\包含如下字符串
my $status = `/usr/bin/ps -ef | grep $_ | grep -v grep | awk '{print\$2}'`;
/主页/制作/agt/PtpAgent.sh
例如,我可以在执行命令中将$输出值更改为“PtpAgent”吗
my $status = `/usr/bin/ps -ef | grep <some_regex_pattern>$_<some_regex_pattern> | grep -v grep | awk '{print\$2}'`;
my$status=`/usr/bin/ps-ef | grep$124; grep-v grep | awk'{print\$2}`;
您可以,我建议您使用s///它默认为$_
s#.*/(.*?)\.sh$#$1#
你也可以
$_=~s#.*/(.*?)\.sh$#$1#;
或
我还建议您尽量减少管道,只使用perl进行过滤。它干净多了
my $status = qx(/usr/bin/ps -ef ) ;
$status=~s/.*\n.*?(grep.*?)\n.*/$1/m; #adjust the capture group accordingly
但是,这只是个人喜好。您可以,我建议您使用默认为$_
s#.*/(.*?)\.sh$#$1#
你也可以
$_=~s#.*/(.*?)\.sh$#$1#;
或
我还建议您尽量减少管道,只使用perl进行过滤。它干净多了
my $status = qx(/usr/bin/ps -ef ) ;
$status=~s/.*\n.*?(grep.*?)\n.*/$1/m; #adjust the capture group accordingly
然而,这只是个人偏好。hoffmeister最小化管道并使用PERL正则表达式的方法会很好,因为您只需要在“/”上拆分,并获取最后一个元素来获取所需的字符串。然后您可以轻松地将其传递到管道的下一个阶段。hoffmeister最小化管道并使用PERL正则表达式的方法会很好,因为您只需要在“/”上拆分,并获取最后一个元素以获取所需的字符串。然后,您可以轻松地将其传递到管道的下一个阶段。当然可以。但是这里的问题是什么,对你不起作用吗?@yacc对我不起作用,我尝试了多个regex模式,但仍然无法获得输出为“PtpAgent”,只提供了一些不起作用的示例。@yacc$\u=~ m/\/(\w+)/这是我在上一次尝试中写的你应该做的:
open(我的$ps\u句柄,'ps-ef')代码>并用perl完成作业,而不是使用grep和awk。当然可以。但是这里的问题是什么,对你不起作用吗?@yacc对我不起作用,我尝试了多个regex模式,但仍然无法获得输出为“PtpAgent”,只提供了一些不起作用的示例。@yacc$\u=~ m/\/(\w+)/这是我在上一次尝试中写的你应该做的:open(我的$ps\u句柄,'ps-ef')代码>并用perl完成作业,而不是使用grep和awk。