我正在尝试制作一个非常简单的 shell 脚本来释放一些内存空间。为此,我正在使用命令
$ ps xopmem o%c
输出正在运行的进程列表及其百分比内存使用情况。现在,我只想过滤掉那些值(在第一个字段中)大于 5.0 的行。我怎样才能做到这一点?我最好使用 SED。
PS:我在互联网上搜索了这个主题,但一无所获。任何帮助将不胜感激。
我正在尝试制作一个非常简单的 shell 脚本来释放一些内存空间。为此,我正在使用命令
$ ps xopmem o%c
输出正在运行的进程列表及其百分比内存使用情况。现在,我只想过滤掉那些值(在第一个字段中)大于 5.0 的行。我怎样才能做到这一点?我最好使用 SED。
PS:我在互联网上搜索了这个主题,但一无所获。任何帮助将不胜感激。
sed
无法进行数值比较,您需要向上移动一个工具,即awk
:
ps xopmem o%c | awk '$1 > 5.0'
即当第一个字段大于5时,执行默认块:{ print $0 }
.
单程。-n
swith 避免自动打印,并且正则表达式匹配开头的任何空格和大于 5.0 的任何数字。该p
指令打印与前一个正则表达式匹配的行。
ps xopmem o%c | sed -ne '/^ *[5-9]\.[0-9]/ p'
ps xopmem o%c | sort -nr | \
while read line
do v=$(echo $line | cut -d' ' -f1);
[[ $v < 5 ]] && break;
echo $line;
done