3

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

$ ps xopmem o%c

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

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

4

3 回答 3

10

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

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

即当第一个字段大于5时,执行默认块:{ print $0 }.

于 2012-07-15T17:24:13.943 回答
1

单程。-nswith 避免自动打印,并且正则表达式匹配开头的任何空格和大于 5.0 的任何数字。该p指令打印与前一个正则表达式匹配的行。

ps xopmem o%c | sed -ne '/^ *[5-9]\.[0-9]/ p'
于 2012-07-15T17:09:31.973 回答
1
ps xopmem o%c | sort -nr | \
    while read line
    do v=$(echo $line | cut -d' ' -f1); 
      [[ $v < 5 ]] && break; 
      echo $line; 
    done
于 2012-07-15T17:31:05.060 回答