linux按列排序命令 linux排序算法( 二 )


qRES进程使用的、未被换出的物理内存大小 , 单位kb 。RES=CODE+DATA
rCODE可执行代码占用的物理内存大小,单位kb
sDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
tSHR共享内存大小 , 单位kb
unFLT页面错误次数
vnDRT最后一次写入到现在,被修改过的页面数 。
wS进程状态 。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
xCOMMAND命令名/命令行
yWCHAN若该进程在睡眠 , 则显示睡眠中的系统函数名
zFlags任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列 。可以通过下面的快捷键来更改显示内容 。
更改显示内容
通过 f 键可以选择显示的内容 。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定 。
按 o 键可以改变列的显示顺序 。按小写的 a-z 可以将相应的列向右移动 , 而大写的 A-Z 可以将相应的列向左移动 。最后按回车键确定 。
按大写的 F 或 O 键 , 然后按 a-z 可以将进程按照相应的列进行排序 。而大写的 R 键可以将当前的排序倒转 。
linux sort 命令整理 无论是工作中使用还是应付各种面试 , linux sort 都是必须要掌握的 linux 基本命令之一 。尤其是 linux sort -k 命令 , 经常会被搞晕,索性好好研究一下 sort 命令
语法:
选项:
参数就不一一介绍了,直接上例子,首先先看下原始的排序数据
cat sort.log
1、打印从哪列开始是乱序
sort -c sort.log; echo $?
sort -C sort.log; echo $?
其中,返回结果 1 , 表示文件不是已经排序好的文件
2、默认排序( 整行进行ASCII字符升序)
sort sort.log
3、高能来了 , 让人迷糊的 k 语法,首先看下 k 的语法格式
这个语法格式可以被其中的逗号(”,”)分为两大部分,Start部分和End部分
Start和End部分都由三部分组成,其中的Modifier部分就是类似n和r的选项部分,可省略
FStart、Fend,表示使用的域,而CStart则表示在FStart域中从第几个字符开始算"排序首字符",同理,CEnd表示结尾的第几个字符是排序末尾字符,.CStart、.CEnd是可以省略的 , 分别表示从本域的开头部分开始、到本域的域尾结束,CEnd设定为0,也是表示结尾到域尾 。口说无凭,上几个例子吧
3.1 对第三列进行排序,如果不加n,按照 ASCII字符排序
sort -t $'\t' -k 3 sort.log
3.2 加n后,按照数值排序
sort -t $'\t' -k 3n sort.log
3.3 不指定 FEnd 时,多个-k 从前往后排序可以 , 从后往前不行
从后往前 , 多个 -k,数据符合预期
sort -t $'\t' -k 3n -k 1 sort.log
从后往前,多个 -k,第三列相同时,按照第一列降序排列,数据符合预期
sort -t $'\t' -k 3n -k 1r sort.log
更换成从前往后
sort -t $'\t' -k 1 -k 3n sort.log
sort -t $'\t' -k 1 -k 3nr sort.log
通过sort -t $'\t' -k 1 -k 3n sort.log 和sort -t $'\t' -k 1 -k 3nr sort.log返回的结果发现,在第一列相等时,无论其三列是正序排列,还是逆序排列 , 结果都一样,说明后边的 -k 未生效
当指定 FEend 后
sort -t $'\t' -k 1,1 -k 3nr sort.log
3.4 作用域
紧跟在字段后的选项(如"-k3n"的"n"和"-k2nr"的"n","r")称为私有选项,使用短横线写在字段外的选项(如"-n"、"-r")为全局选项 。当没有为字段分配私有选项时,该排序字段将继承全局选项,所有选项包括但不限于"bfnrhM"

推荐阅读