我正在尝试创建一个非常简单的shell脚本来释放一些内存空间。为此,我使用命令
$ ps xopmem o%c
输出正在运行的进程列表及其内存使用百分比。现在,我想过滤掉那些值(在第一个字段中)大于5.0的行。我怎样才能做到这一点?我最好使用SED。
P.S。:我在互联网上搜索这个主题,但一无所获。任何帮助将不胜感激。
答案 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