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

Filter 包含大于X.Y的浮点数的筛选行,filter,floating-point,sed,numbers,line,Filter,Floating Point,Sed,Numbers,Line,我正在尝试制作一个非常简单的shell脚本,以释放一些内存空间。为此,我使用命令 $ ps xopmem o%c 输出正在运行的进程及其内存使用百分比的列表。现在,我只想过滤掉那些值(在第一个字段中)大于5.0的行。我该怎么做?我最好使用SED 注:我在网上搜索过这个话题,但什么也没找到。任何帮助都将不胜感激。单向-nswith避免自动打印,并且regexp匹配开头的任何空格和大于5.0的任何数字。p指令打印与上一个regexp匹配的行 ps xopmem o%c | sed -ne '/^

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

$ ps xopmem o%c
输出正在运行的进程及其内存使用百分比的列表。现在,我只想过滤掉那些值(在第一个字段中)大于5.0的行。我该怎么做?我最好使用SED


注:我在网上搜索过这个话题,但什么也没找到。任何帮助都将不胜感激。

单向
-n
swith避免自动打印,并且regexp匹配开头的任何空格和大于5.0的任何数字。
p
指令打印与上一个regexp匹配的行

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

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

ps xopmem o%c | awk '$1 > 5.0'
也就是说,当第一个字段大于5时,执行默认块:
{print$0}

ps xopmem o%c | sort-nr |\
ps xopmem o%c | sort -nr | \
    while read line
    do v=$(echo $line | cut -d' ' -f1); 
      [[ $v < 5 ]] && break; 
      echo $line; 
    done
读行时 do v=$(回声$线|切割-d'-f1); [$v<5]]&中断; 回声线; 完成
谢谢!这就是我正在搜索的内容。+1,但是
{print}
是多余的。写
awk'$1>2.0'
就足够了,没错
{print}
是隐式的,如果没有给出代码块,很好。谢谢你的回答,但这对我来说不起作用,而且太长了。谢谢你的回答,但是值5.0是一个变量,在这段代码中更改它太复杂了。无论如何,这段代码没有为我输出任何东西。