回答:
純粋にWindowsツールを使用する場合の最善の策は、おそらくPowershellです。ワンライナー:PSで既に:
$(sls '[0-9]+' filename.txt -allm).Matches.Value
CMD.EXEから:
powershell -c "$(sls '[0-9]+' test.txt -allm).Matches.Value"
filename.txt行だけを含むテキストファイル(と呼ばれる)の場合、次のように出力されます。
80
136
95
複数の行と1行に複数の数字があるファイルでテストしましたが、それでも動作し、各数字を独自の行に出力します。これで、エコーしたくない他の番号がファイルにある場合、それらもエコーされます。それを避けるために、次で終わる数字で一致させることができますrr。
$(sls '[0-9]+rr' test.txt -allm).Matches | foreach {$_.Value.trim('r')}
または
powershell -c "$(sls '[0-9]+rr' test.txt -allm).Matches | foreach {$_.Value.trim('r')}"
Linuxでは、gawkコマンドを使用できます。私はこのようにしました:
echo "yyy = 80rr, xxx = 136rr, zzz = 95rr" | gawk '{ match($0, /.*= ([0-9]+).*= ([0-9]+).*= ([0-9]+)/, array); printf "%d %d %d\n",array[1], array[2], array[3]}';
結果は次のとおりです。
80 136 95
あなたの場合:
cat file.txt | gawk '{ match($0, /.*= ([0-9]+).*= ([0-9]+).*= ([0-9]+)/, array); printf "%d %d %d\n",array[1], array[2], array[3]}';