我在一個C程序調用的linux終端中運行LIBSVM。好吧,我需要選擇輸出,但格式如下在程序輸出(Bash)中選擇一個特定的值
Accuracy = 80% (24/30) (classification)
我需要只挑選「80」值作爲整數。我試圖用sed和來到這個命令:
sed 's/[^0-9^'%']//g' 'f' >> f
這是過濾所有整數輸出,因此,還沒有成型,所以我需要幫助。在此先感謝
我在一個C程序調用的linux終端中運行LIBSVM。好吧,我需要選擇輸出,但格式如下在程序輸出(Bash)中選擇一個特定的值
Accuracy = 80% (24/30) (classification)
我需要只挑選「80」值作爲整數。我試圖用sed和來到這個命令:
sed 's/[^0-9^'%']//g' 'f' >> f
這是過濾所有整數輸出,因此,還沒有成型,所以我需要幫助。在此先感謝
嘗試在PCRE模式grep
(-P
),只打印出匹配的零件(-o
),具有lookahead assertion:
$ echo "Accuracy = 80% (24/30) (classification)" | grep -Po '[0-9]+(?=%)'
80
的正則表達式:
[0-9] # match a digit
+ # one or more times
(?=%) # assert that the digits are followed by a %
這是非常瑣碎與awk
。確定您需要的欄目並從中刪除'%'符號。 /^Accuracy/
正則表達式可確保僅在以精度開頭的行上執行該操作。如果您的文件只包含一行,則不需要它。
awk '/^Accuracy/{sub(/%/,"");print $3}' inputFile
或者,您也可以設置空間和%
作爲字段分隔並做
awk -F'[ %]' '/^Accuracy/{print $3}' inputFile
如果你想與sed
做到這一點,那麼你可以嘗試這樣的:
sed '/^Accuracy/s/.* \(.*\)%.*/\1/' inputFile
這可能適合你(GNU sed):
sed -nr '/^Accuracy = ([^%]*)%.*/s//\1/p' file
謝謝,它工作得很好。 :d –