我在由 C 程序调用的 linux 终端中运行 LIBSVM。好的,我需要选择输出,但格式如下
Accuracy = 80% (24/30) (classification)
我只需要选择“80”值作为整数。我尝试使用 sed 并得出以下命令:
sed 's/[^0-9^'%']//g' 'f' >> f
这是过滤输出中的所有整数,因此还没有工作,所以我需要帮助。提前致谢
这是非常微不足道的awk
。确定您需要的列并从中删除“%”符号。正/^Accuracy/
则表达式确保仅在以 Accuracy 开头的行上执行操作。如果您的文件仅包含一行,则不需要它。
awk '/^Accuracy/{sub(/%/,"");print $3}' inputFile
或者,您可以将空格和设置%
为字段分隔符并执行
awk -F'[ %]' '/^Accuracy/{print $3}' inputFile
如果您想这样做,sed
那么您可以尝试以下操作:
sed '/^Accuracy/s/.* \(.*\)%.*/\1/' inputFile
尝试grep
在 PCRE 模式 ( -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 %
这可能对您有用(GNU sed):
sed -nr '/^Accuracy = ([^%]*)%.*/s//\1/p' file