1

Cプログラムによって呼び出されるLinuxターミナルでLIBSVMを実行しています。OK、出力を選択する必要がありますが、形式は次のとおりです

Accuracy = 80% (24/30) (classification)

整数として「80」値のみを選択する必要があります。sed を試してみたところ、次のコマンドにたどり着きました。

sed 's/[^0-9^'%']//g' 'f' >> f

これは出力内のすべての整数をフィルタリングしているため、まだ機能していないため、助けが必要です. 前もって感謝します

4

3 に答える 3

1

grepPCRE モード ( ) で試し-P、一致した部分のみを出力 ( -o) し、先読みアサーションを使用します。

 $ 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 %
于 2013-06-30T02:35:54.127 に答える
1

これはうまくいくかもしれません(GNU sed):

sed -nr '/^Accuracy = ([^%]*)%.*/s//\1/p' file
于 2013-06-30T04:07:04.433 に答える