如何使用 grep 從命令的輸出列印特定變數?

如何使用 grep 從命令的輸出列印特定變數?

測試.txt 檔案:

Ext Temperatur:  210.0°
Avg.Speed(All):    62.89mm/s
Avg.Speed(Print):  49.99mm/s
Avg.Speed(Travel): 199.84mm/s
Overall Time (w/o Acceleration): 11:00:41 (39640.65sec)

如何使用php 程式碼取得62.89mm/s62.89作為輸出並進行列印?grep

我正在使用這段程式碼,但它會列印整行,例如:Avg.Speed(All): 62.89mm/s

<?php
$gcode_new = "grep -P 'Avg.Speed(All):' test.txt";

include('Net/SSH2.php');

$ssh = new Net_SSH2('XXX.61.XXX.227');
if (!$ssh->login('root', 'PASS')) {
    exit('Login Failed');
}
$target = $ssh->exec($gcode_new);

echo $target ;
?>

問題更新:我如何從與「總體時間(無加速):」相關的上述資料複製 11:00:41 嘗試使用答案中建議的命令,但11:00:41 (39640.65sec)在這裡接收我如何避免(39640.65sec)$ grep -Po '(?<=Overall Time \(w/o Acceleration\): ).*' testjar.txt

答案1

透過 GNU grep 使用正向後向斷言:

$ grep -Po '(?<=Avg.Speed\(All\):    ).*' test.txt
62.89mm/s
$ grep -Po '(?<=Avg.Speed\(All\):    )[0-9\.]+' test.txt
62.89

答案2

透過匹配並刪除行的開頭來從範例資料中獲取sed資料:62.89mm/s

sed -n 's/^Avg\.Speed(All):[[:blank:]]*//p' test.txt

也要mm/s從末尾刪除單位(這會從末尾刪除所有非數字):

sed -n '/^Avg\.Speed(All):[[:blank:]]*/{s///;s/[^[:digit:]]*$//p;}' test.txt

對於更新問題:

sed -n 's/^Overall Time.*\(..:..:..\).*/\1/p' file

Overall Time這將從資料中以開頭的行中提取時間字串。

相關內容