仅输出文本中的特定变量

Kal*_*sov 0 bash perl awk grep sed

仅输出文本中的特定变量.在这种情况下:

echo "ote -C -pname ap01 -HLS 134 -db 1 -instance 43 -log ap01"
Run Code Online (Sandbox Code Playgroud)

想要从"-pname"中仅获取此值

检测结果:

ap01
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 5

-log拿一个字符串.那个字符串可能是-pname.到目前为止,现有的解决方案无法处理这个问题,并将-log参数的值视为另一个参数的开头.

ote如果需要稳健的解决方案,则必须重新创建解析执行的参数.以下是您的方法.

echo ... | perl -MGetopt::Long -nle'
   local @ARGV = split;
   GetOptions(\%args, "C", "pname=s", "HLS=i", "db=i", "instant=i", "log=s")
      && defined($args{pname})
         && print($args{pname});
'
Run Code Online (Sandbox Code Playgroud)