筛选包含大于X.Y的浮点数的行

时间:2012-07-15 16:58:00

标签: filter floating-point sed numbers line

我正在尝试创建一个非常简单的shell脚本来释放一些内存空间。为此,我使用命令

$ ps xopmem o%c

输出正在运行的进程列表及其内存使用百分比。现在,我想过滤掉那些值(在第一个字段中)大于5.0的行。我怎样才能做到这一点?我最好使用SED。

P.S。:我在互联网上搜索这个主题,但一无所获。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:8)

sed无法进行数值比较,您需要移动一个工具,即awk

ps xopmem o%c | awk '$1 > 5.0'

也就是说,当第一个字段大于5时,执行默认块:{ print $0 }

答案 1 :(得分:1)

一种方式。 -n swith避免自动打印,正则表达式匹配开头的任何空格和任何大于5.0的数字。 p指令打印与前一个正则表达式匹配的行。

ps xopmem o%c | sed -ne '/^ *[5-9]\.[0-9]/ p'

答案 2 :(得分:1)

ps xopmem o%c | sort -nr | \
    while read line
    do v=$(echo $line | cut -d' ' -f1); 
      [[ $v < 5 ]] && break; 
      echo $line; 
    done