作为运维工程师,处理日志、分析数据是家常便饭。sort命令是Linux中高效整理文本的神器,能快速对文件内容排序、去重、统计。本文用最简洁的方式,帮你掌握sort的核心用法。


一、基础排序:秒杀杂乱文本

# 默认按字典序升序排列(文件/输入流)
sort filename.txt # 示例:对日志时间排序(假设第一列为时间)
sort /var/log/nginx/access.log

二、实用参数:精准控制排序

  1. 按数值排序

    处理数字时,务必用-n,避免"10"排在"2"后面!

    sort -n numbers.txt
  2. 逆序排列

    -r实现从大到小或从Z到A:

    sort -nr large_numbers.txt  # 数值逆序
  3. 按指定列排序

    -k选择列,-t指定分隔符(如逗号、冒号):

    # 按第2列(数值)排序CSV文件
    sort -t',' -k2n data.csv
  4. 去重

    -u快速清理重复行(需先排序):

    sort -u ips.txt > unique_ips.txt
  5. 忽略大小写

    -f让"Apple"和"apple"视为相同:

    sort -f mixed_case.txt

三、运维实战场景

1. 统计日志IP访问频率

cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr
  • 步骤拆解

    • awk提取IP列
    • sort排序以便uniq统计
    • uniq -c计数
    • sort -nr按访问量倒序

2. 按内存占用排序进程

ps aux --sort=-%mem | head -n 10
  • --sort=-%mem等价于sort -k4nr(按第4列内存倒序)

3. 合并多个已排序文件

sort -m file1.txt file2.txt > merged.txt
  • -m(merge)效率远高于重新排序大文件

四、避坑指南

  • 性能优化

    处理超大文件时,可用-T指定临时目录(避免默认分区空间不足):

    sort -T /mnt/big_disk/tmp/ huge_file.txt
  • 语言环境

    非英文排序异常时,设置LC_ALL=C禁用本地化规则:

    LC_ALL=C sort file.txt
  • 稳定排序

    若需保留等值行的原始顺序,加-s(stable sort)。


五、总结

sort + awk/uniq等命令组合,是运维分析数据的瑞士军刀。掌握核心参数:

-n(数值)、-k(列)、-t(分隔符)、-r(逆序)、-u(去重),即可应对90%的排序需求。

记住: 处理数据前,先用headsample.txt测试命令,避免直接操作大文件翻车!

Linux运维必备:sort 命令快速上手指南的更多相关文章

  1. 云计算:Linux运维核心管理命令详解

    云计算:Linux运维核心管理命令详解 想做好运维工作,人先要学会勤快: 居安而思危,勤记而补拙,方可不断提高: 别人资料不论你用着再如何爽那也是别人的: 自己总结东西是你自身特有的一种思想与理念的展 ...

  2. 提高Linux运维效率的命令行常用快捷键

    提高Linux运维效率的命令行常用快捷键 tab 命令或路径等的补全键,Linux最有用快捷键 Ctrl+a 光标回到命令行首 Ctrl+e 光标回到命令行尾 Ctrl+k 剪切(删除)光标处到行尾的 ...

  3. linux运维中的命令梳理(一)

    在linux日常运维中,我们平时会用到很多常规的操作命令. 下面对常用命令进行梳理: 命令行日常系快捷键(不分大小写)CTRL + A 移动光标到行首CTRL + E 移动光标到行末CTRL + U ...

  4. linux运维中的命令梳理(二)

    回想起来,从事linux运维工作已近5年之久了,日常工作中会用到很多常规命令,之前简单罗列了一些命令:http://www.cnblogs.com/kevingrace/p/5985486.html今 ...

  5. linux运维中的命令梳理(三)

    ----------文本操作命令---------- sed命令:文本编辑工具 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特 ...

  6. Linux就业技术指导(五):Linux运维核心管理命令详解

    一,Linux核心进程管理命令 1.1 ps:查看进程 1.1.1 命令解释 功能说明 ps命令用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片.如果想要动态地显示进程,就需要使 ...

  7. linux运维中的命令梳理(四)

    ----------管理命令---------- ps命令:查看进程 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不 ...

  8. Linux的压缩解压命令快速上手——解压篇

    在Linux系统中,压缩文件通常是先将若干文件(包括目录)打包成一个tar文件,然后再调用压缩程序将tar文件压缩成相应的压缩包,这也就是为什么Linux系的压缩包的后缀通常都是像tar.gz,tar ...

  9. 推荐linux运维必备的几本书

    首先,<鸟哥的linux私房菜> 鸟哥 其次,<linux就该这么学> 刘瑞版 然后,<CentOS linux系统运维> 张祥琳版 最后,<CentOS运维 ...

  10. linux 运维必备150个命令

    线上查询及帮助命令(1个) man 目录操作命令(6个) ls tree pwd mkdir rmdir cd 文件操作命令(7个) touch cp mv rm ln find rename 文件查 ...

随机推荐

  1. [转]v-mode 提示错误 v-model directives require the attribute value which is valid as LHS.

    v-mode总是提示错误 v-model  directives require the attribute value which is valid as LHS. 为什么调用过滤总是提示这个错呢? ...

  2. JavaScript中find()和 filter()方法的区别小结

    前言 JavaScript 在 ES6 上有很多数组方法,每种方法都有独特的用途和好处. 在开发应用程序时,大多使用数组方法来获取特定的值列表并获取单个或多个匹配项. 在列出这两种方法的区别之前,我们 ...

  3. 2022 年数据科学研究综述:重点介绍 ML、DL、NLP 等

    2022 年数据科学研究综述:重点介绍 ML.DL.NLP 等 当我们在 2022 年底临近时,我对许多著名研究小组完成的所有惊人工作感到振奋,他们将 AI.机器学习.深度学习和 NLP 的状态扩展到 ...

  4. 在jooq的POJO类中使用Lombok的Data注解

    jooq生成pojo类的配置根据官方给的如下: https://www.jooq.org/doc/3.14/manual/getting-started/tutorials/jooq-in-7-ste ...

  5. 2022 年万圣节 Github 彩蛋

    记录每年 Github 万圣节彩蛋,也记录有来项目成长历程. 2022 万圣节彩蛋 2021 万圣节彩蛋 2020 万圣节彩蛋

  6. Python 潮流周刊#86:Jupyter Notebook 智能编码助手(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. 创建多线程的方式二:实现Runnable接口

      /** * 创建多线程的方式二:实现Runnable接口 * 1. 创建一个实现了Runnable接口的类 * 2. 实现类去实现Runnable中的抽象方法:run() * 3. 创建实现类的对 ...

  8. linux实现人脸识别锁定解锁

    环境 archlinux 桌面管理器i3wm 登录管理器 slim python 3.10.4 dlib pip install --user -i https://pypi.tuna.tsinghu ...

  9. java中数组和字符串

    数组 数组的声明方式: 类型[] 变量; 数组的创建方式: new 类型[数组长度] 数组的简单声明并且赋值 // 声明一个数组,它的长度是3 String[] arrs= new String[3] ...

  10. 独立开发经验谈:如何借助 AI 辅助产品 UI 设计

    我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统.陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户,在这个过程中,我也积累了不少如何开发运营 ...