Linux命令行中快速排序及取值更大值方法 (linux排序取值更大的)

在Linux系统下,命令行是最常用的操作方式之一。当我们需要对数据进行排序以及取得更大值时,命令行也是十分实用的工具。本文将会介绍如何在Linux命令行中快速地进行排序和取值更大值的方法。

一、快速排序

1. sort命令

sort命令是Linux系统自带的一个排序命令,它可以将一个文本文件的内容按照行为单位进行排序。sort命令的使用方法如下:

[pln] view pln copy

sort [OPTION]… [FILE]…

其中,[OPTION]是sort命令的可选参数,[FILE]是待排序的文件。

sort命令的一些常用选项如下所示:

-d:按照字典序排序;

-n:按照数值大小排序;

-r:逆序排序;

-k:指定排序的列号或者区间。

例如:

[pln] view pln copy

sort -n FILE_NAME

将会对文件FILE_NAME的内容按照数值大小进行排序。

[pln] view pln copy

sort -r -k 3,3 FILE_NAME

将会对文件FILE_NAME的内容按照第3列逆序排序。

2. awk命令配合sort命令

awk命令是一个文本处理工具,它可以支持各种对文本内容的操作。awk命令和sort命令结合使用可以实现更加有用的功能。

例如,我们有一个文件FILE_NAME,其中每一行是由逗号分隔的三个数值,现在我们需要按照第三列进行排序。可以使用如下命令:

[pln] view pln copy

awk -F ‘,’ ‘{print $3 “,” $0}’ FILE_NAME | sort | cut -d ‘,’ -f 2-

其中,-F参数用来指定分隔符,awk的语句表示将第三列的值移到行首,并在第三列的值与原来的内容之间加上一个逗号。 then使用sort命令排序,最后使用cut命令删除逗号并将第三列的值移到行尾。其实,这里将第三列移到行首遵循的是一种类似于数据库SQL语句中的“group by”从句,这个语句可以将3处相同数字的行合并成一行。这个技巧可以在某个条件下帮您找出文件里前X个数量最多的简历、共享文件、URL等。

这样,就可以按照第三列的数值大小对文件FILE_NAME进行排序了。

二、取值更大值

1. 使用sort命令

sort命令不仅可以对文件内容进行排序,还可以获得更大值。例如,我们有一个文件FILE_NAME,其中每一行是由逗号分隔的两个数值,现在我们需要取得第二列的更大值,可以使用如下命令:

[pln] view pln copy

sort -t ‘,’ -k 2,2nr FILE_NAME | head -n 1 | cut -d ‘,’ -f 2

其中,sort命令的-t参数指定分隔符,我们这里选择逗号。-k参数用来指定按照第二列进行排序,nr表示逆序排序。则使用head命令会从排好序的文件中选择之一个,也就是更大值。最后使用cut命令取出更大值的值并输出。这里我们只输出第二列的值,因此f=2。

2. 使用awk命令

awk命令也可以处理文本文件并计算更大值。例如,我们有一个文件FILE_NAME,其中每一行是由逗号分隔的两个数值,现在我们需要取得第二列的更大值,可以使用如下命令:

[pln] view pln copy

awk -F ‘,’ ‘{if ($2>max) max=$2} END {print max}’ FILE_NAME

其中,-F参数指定文本文件中的分隔符,由于是逗号分隔的文件,则将-F参数指定为逗号。then使用awk命令计算更大值。if语句用来逐行比较每一行的第二列与更大值,确保找到文件中的更大值。结束时使用END语句,打印更大值。

本文介绍了Linux命令行中的快速排序和取值更大值方法。sort命令是一个自带的排序工具,它可以按照不同的选项对文件内容进行排序,取得文件中的更大值。awk命令也可以用来处理文本文件并计算更大值。这些命令是Linux系统中最常用的工具之一,它们使得我们可以轻松地对文件进行处理和分析。

相关问题拓展阅读:

Linux TOP命令按内存占用排序和按CPU占用排序

Linux存在着许多不同的Linux版本,但它们都使用了

Linux内核

。Linux可安装在各种计算机硬件设备中,比如手机、

平板电脑

、路由器、视频游戏控制台、台式计算机、大型机和

超级计算机

。下面让我们一起去了解Linux TOP命令 按内存占用排序和按CPU占用排序。

 

 Linux TOP命令 按内存占用排序和按CPU占用排序:

  :在

命令行

提示符执行top命令

:输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)

  另外:

  认识top的显示结果

  top命令的显示结果如下所示:

  top – 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem:k total,k used, 17616k free, 22023k buffers Swap:k total, 0k used,k free,k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 rootS 0.7 1.3 0:11.03 sshdroot 796 R 0.7 0.5 0:02.72 top 1 root 544 S 0.0 0.3 0:00.90 init 2 rootS 0.0 0.0 0:00.00 ksoftirqd/0 3 root RTS 0.0 0.0 0:00.00 watchdog/0统计信息区

  前五行是系统整体的统计信息。之一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

:06:48当前时间

  up 1:22系统运行时间,格式为时:分

user当前登录用户数

  load average: 0.06, 0.60, 0.48系统负载,即任务队列的平均长度。

  三个数值分别为 1分钟、5分钟、15分钟前到现在的

平均值

  第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

  Tasks: 29 total进程总数

running正在运行的进程数

sleeping睡眠的进程数

stopped停止的进程数

zombie

僵尸进程

  Cpu(s): 0.3% us用户空间占用CPU百分比

.0% sy内核空间占用CPU百分比

.0% ni用户进程空间内改变过优先级的进程占用CPU百分比

.7% id空闲CPU百分比

.0% wa等待输入输出的CPU时间百分比

.0% hi

.0% si

  最后两行为内存信息。内容如下:

  Mem:k total

物理内存

总量

k used使用的物理内存总量

k free空闲内存总量

k buffers用作内核缓存的内存量

  Swap:k total交换区总量

k used使用的交换区总量

k free空闲交换区总量

k cached缓冲的交换区总量。

  内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,

  该数值即为这些内容已存在于内存中的交换区的大小。

  相应的内存再次被换出时可不必再对交换区写入。

  进程信息区

  统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

  序号列名含义

  aPID进程id

  bPPID父进程id

  cRUSERReal user name

  dUID进程所有者的用户id

  eUSER进程所有者的

用户名

  fGROUP进程所有者的组名

  gTTY启动进程的终端名。不是从终端启动的进程则显示为 ?

  hPR优先级

  iNInice值。负值表示高优先级,正值表示低优先级

  jP最后使用的CPU,仅在多CPU环境下有意义

  k%CPU上次更新到现在的CPU时间占用百分比

  lTIME进程使用的CPU时间总计,单位秒

  mTIME+进程使用的CPU时间总计,单位1/100秒

  n%MEM进程使用的物理内存百分比

  oVIRT进程使用的

虚拟内存

总量,单位kb。VIRT=SWAP+RES

  pSWAP进程使用的虚拟内存中,被换出的大小,单位kb。

  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

补充说明:sort可针对文本文件的内容,以行为单位来排序。

参  数:

-b

忽略每行前面开始出的空格字符。

-c

检查文件是否已经按照顺序排序。

-d

排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

-f

排序时,将小写字母视为大写字母。

-i

排序时,除了040至176之间的ASCII字符外,忽略其他的字符。

-m

将几个排序好的文件进行合并。

-M

将前面3个字母依照月份的缩写进行排序。

-n

依照数值的大小排序。

-o

将排序后的结果存入指定的文件。

-r

以相反的顺序来排序。

-t

指定排序时所用的栏位分隔字符。

+-

以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

–help

显示帮助。

–version

显示版本信息

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面通过几个例子来讲述Sort的使用。

用Sort命令对text文件中各行排序后输出其结果。请注意,在原文件的第二、三行上的之一个单词完全相同,该命令将从它们的庆做第二个单词vegetables与fruit的首字符处继续进行比较。

$

cat

text

vegetable

soup

fresh

vegetables

fresh

fruit

lowfat

milk

$

Sort

text

fresh

fruit

fresh

vegetables

lowfat

milk

vegetable

soup

用户可以保存排序后的文件内容,或把排序后的文件内容输出至打印机。下例中用户把排序后的文件内容保存到名为result的文件中。

$

Sort

text>result

以第2个字段作为排序关键字对文件example的内容进行排序。

$

Sort

+1-2

example

对于file1和file2文件内容反向排序,结果放在outfile中,利用第2个字段的之一个字符作为排序关键字。

$

Sort

-r

-o

outfile

+1.0

-1.1

example

Sort排序常用于在管道中与其他命令连用,组合完成比较复杂的功能,如利用管道将当前工作目录中的文件送给Sort进行排序,排序关键字是第6个至第8个字段。

$

ls

l

|

Sort

+5

$

ps

-e

-o

comm

pid

time”|Sort

-d

//按照command的首字母的字母顺序排序

Sort命令也可以对标准输入进行操作。例如,如果您想誉森衡把几个文件文本行合并,并对合并后的文本行进行排序,您可以首先用命令cat把多个文件合

并,然后用管道操作把合并后的文本行输入给命令Sort,Sort命令将输出这些合并及排序后的文本行。在下面的例子中,文件veglist与文件

fruitlist的文本行经过合并与排序后被保存到文件clist中。

$

cat

veglist

fruitlist

|

Sort

>

关于linux排序取值更大的的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux命令行中快速排序及取值更大值方法 (linux排序取值更大的)