我从多播地址分析流。命令输出如下:
...
Sep 03 19:06:45: INFO: Bitrate: 8241 Kbit/s
Sep 03 19:06:45: ERROR: Scrambled: 250=4792 251=132 252=132 253=263
...
我需要在比特率: [8241]之后获取价值并在PHP脚本中设置frist变量,并且在加扰后之后才在" ="之后[250,251,252,253]为第二个变量。
示例$var1=8241; $var2=250,251,252,253
。我找到了grep -oP '(?<=Bitrate: )[0-9]+'
如何获得&#34; 8241&#34;但我需要两个变量一步。
答案 0 :(得分:1)
将所需的值同时grep到2个变量中会有问题。
所以这是一个完整的 php 解决方案(使用shell_exec
函数调用 awk 脚本) :
<?php
$command = 'yourcommand | awk \'/Bitrate/{ printf "%d ", $6 }/Scrambled/{ for(i=6;i<=NF;i++)'
. 'printf "%d ",substr($i,1,index($i,"=")) }\'
';
$result = trim(shell_exec($command));
if ($result) {
$arr = explode(" ", $result);
$bitrate = $arr[0];
$scrambled = array_slice($arr, 1);
}
print_r('bitrate: ' . $bitrate . PHP_EOL);
print_r('scrambled: ');
print_r($scrambled);
格式化输出:
bitrate: 8241
scrambled: Array
(
[0] => 250
[1] => 251
[2] => 252
[3] => 253
)