欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell腳本中sort工具的實現(xiàn)

 更新時間:2025年08月11日 10:16:29   作者:咖啡の貓  
sort是一個非常實用的文本排序命令,它可以幫助我們對文件或標準輸入的數(shù)據(jù)進行按行排序,支持多種排序方式,本文就來介紹了sort工具的使用,感興趣的可以了解一下

一、前言

在 Linux/Unix 系統(tǒng)中,sort 是一個非常實用的文本排序命令,它可以幫助我們對文件或標準輸入的數(shù)據(jù)進行 按行排序,支持多種排序方式,包括按字符串排序、按數(shù)值排序、指定字段排序等。

無論是查看日志、統(tǒng)計訪問次數(shù),還是編寫自動化腳本,sort 都是一個不可或缺的工具。

本文將帶你全面了解 sort 工具的使用方式,包括:

? sort 的基本語法與常用參數(shù)
? 如何按字段、數(shù)值、字符等進行排序
? sort 在 Shell 腳本中的實戰(zhàn)應用
? 與其他文本處理命令的聯(lián)合使用
? 實際開發(fā)中的常見問題與優(yōu)化建議

并通過完整的代碼示例幫助你快速上手并熟練掌握 sort 的各種高級用法。

二、什么是 sort?

sort 是一個用于 對文本數(shù)據(jù)進行排序 的命令行工具。

它可以:

  • 對文件按行排序
  • 支持升序或降序排列
  • 按照指定字段排序
  • 忽略大小寫、按數(shù)值排序等

? 典型用途包括:

場景示例
日志分析對訪問日志按時間排序
數(shù)據(jù)統(tǒng)計對 IP 出現(xiàn)頻率排序
配置管理對配置項按關鍵字排序
自動化腳本排序后去重輸出唯一值

三、sort 基礎語法

sort [選項] 文件名

? 常用選項說明:

參數(shù)描述
-n按數(shù)值排序
-r逆序(降序)排序
-k指定排序字段(如 -k2 表示按第2個字段排序)
-t指定字段分隔符(默認為空格或制表符)
-u輸出唯一行(去重)
-b忽略前導空格
-f忽略大小寫
-o將結(jié)果輸出到文件

四、sort 使用示例

? 示例1:基本排序

sort names.txt

默認按字母順序升序排序。

? 示例2:按數(shù)值排序(-n)

cat scores.txt
# 內(nèi)容:
# 90
# 85
# 100
# 78

sort -n scores.txt

輸出:

78
85
90
100

? 示例3:逆序排序(-r)

sort -nr scores.txt

輸出:

100
90
85
78

? 示例4:按字段排序(-k+-t)

假設有一個 CSV 文件 data.csv

Alice,28,Beijing
Bob,32,Shanghai
Charlie,25,Guangzhou

按年齡排序:

sort -t',' -k2 data.csv

輸出:

Charlie,25,Guangzhou
Alice,28,Beijing
Bob,32,Shanghai

? 示例5:去重排序(-u)

cat logs.txt
# 內(nèi)容:
# error
# warning
# error
# info

sort -u logs.txt

輸出:

error
info
warning

五、sort 在 Shell 腳本中的應用

? 示例1:統(tǒng)計訪問最多的 IP 并排序

grep 'GET /index.html' access.log | cut -d' ' -f1 | sort | uniq -c | sort -nr

輸出類似:

123 192.168.1.100
98 192.168.1.101
...

? 示例2:提取用戶名并排序輸出

cut -d':' -f1 /etc/passwd | sort

輸出所有用戶并按字母排序。

? 示例3:按日期排序日志文件

sort -k1,1 -k2,2n access.log

先按第一列(日期)排序,再按第二列(時間)排序。

六、sort 與其他命令的配合使用

? 示例1:統(tǒng)計訪問次數(shù)最多的 URL(sort+cut+uniq)

cut -d'"' -f2 access.log | cut -d' ' -f2 | sort | uniq -c | sort -nr | head -n 10

輸出訪問最多的前 10 個 URL。

? 示例2:按內(nèi)存占用排序進程信息(ps+sort)

ps aux --sort=-%mem | head -n 10

輸出內(nèi)存占用最高的前 10 個進程。

? 示例3:合并兩個文件并去重排序(cat+sort+uniq)

cat file1.txt file2.txt | sort -u

輸出兩個文件合并后的唯一內(nèi)容。

七、sort 使用技巧總結(jié)

技巧說明
? 使用 -n 按數(shù)值排序避免字符串比較干擾
? 使用 -r 逆序輸出快速獲取最大/最新記錄
? 使用 -k 多字段排序實現(xiàn)復雜排序邏輯
? 使用 -t 自定義分隔符適用于 CSV、TSV 等格式
? 使用 -u 去重排序快速獲取唯一值
? 使用 -f 忽略大小寫更靈活匹配關鍵詞
? 結(jié)合 uniq 統(tǒng)計頻率實現(xiàn)排名功能
? 使用 -o 輸出到文件避免覆蓋原文件

八、sort 實戰(zhàn)案例匯總

? 案例1:從/etc/passwd提取用戶名并排序

cut -d':' -f1 /etc/passwd | sort

? 案例2:按 HTTP 狀態(tài)碼排序日志

cut -d'"' -f3 access.log | cut -d' ' -f2 | sort -n

? 案例3:統(tǒng)計訪問最多的 IP(帶排序)

cut -d' ' -f1 access.log | sort | uniq -c | sort -nr | head -n 10

九、常見問題與解決方法

問題原因解決方案
排序不準確字段分隔符錯誤檢查 -t 是否匹配實際分隔符
數(shù)字排序異常未使用 -n添加 -n 強制按數(shù)值排序
輸出亂序輸入未預處理使用 tr 或 awk 格式化后再排序
去重無效未使用 -u添加 -u 去除重復行
中文排序亂碼編碼不一致設置 LANG=C 或使用 iconv 轉(zhuǎn)換編碼

十、總結(jié)對比表:sort 常用參數(shù)一覽

參數(shù)功能
-n按數(shù)值排序
-r逆序排序
-k指定字段排序
-t自定義字段分隔符
-u去重輸出
-f忽略大小寫
-b忽略前導空格
-o輸出到文件

十一、結(jié)語

到此這篇關于Shell腳本中sort工具的實現(xiàn)的文章就介紹到這了,更多相關Shell sort工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 深入淺出Shell編程 Shell變量介紹

    深入淺出Shell編程 Shell變量介紹

    先不要管Shell的版本,來看看Shell 變量,在Shell中有三種變量:系統(tǒng)變量,環(huán)境變量,用戶變量。其中用戶變量在編程過程中使用最多,系統(tǒng)變量在對參數(shù)判斷和命令返回值判斷會使用,環(huán)境變量主要是在程序運行的時候需要設置。
    2013-01-01
  • 一個簡單的轉(zhuǎn)換輸出的shell腳本代碼

    一個簡單的轉(zhuǎn)換輸出的shell腳本代碼

    一個簡單的轉(zhuǎn)換輸出的shell腳本,學習shell腳本的朋友可以看下實現(xiàn)方法
    2013-02-02
  • virtualbox 中的linux 共享文件的方法

    virtualbox 中的linux 共享文件的方法

    這篇文章主要介紹了virtualbox 中的linux 共享文件的方法,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-01-01
  • 詳解linux中的文件權(quán)限識別及修改

    詳解linux中的文件權(quán)限識別及修改

    在?Linux?系統(tǒng)中,一切皆文件,這篇文章主要來和大家介紹一下linux中的文件權(quán)限識別以及修改,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-08-08
  • vim命令匯總

    vim命令匯總

    本文主要介紹了vim命令匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • bash shell 重定向輸入和輸出的例子

    bash shell 重定向輸入和輸出的例子

    這篇文章主要介紹了bash shell 重定向輸入和輸出的相關資料,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • 讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法

    讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法

    這篇文章主要介紹了讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法,cron默認只支持以分為單位執(zhí)行Shell腳本的,需要的朋友可以參考下
    2014-10-10
  • Linux下查看內(nèi)存使用情況的方法總結(jié)

    Linux下查看內(nèi)存使用情況的方法總結(jié)

    在做Linux系統(tǒng)優(yōu)化的時候,物理內(nèi)存是其中最重要的一方面,自然的,Linux也提供了非常多的方法來監(jiān)控寶貴的內(nèi)存資源的使用情況,下面的清單詳細的列出了Linux系統(tǒng)下通過視圖工具或命令行來查看內(nèi)存使用情況的各種方法,需要的朋友可以參考下
    2024-01-01
  • Shell命令解析之set命令的用法和參數(shù)詳解

    Shell命令解析之set命令的用法和參數(shù)詳解

    set 命令作用主要是顯示系統(tǒng)中已經(jīng)存在的 shell 變量,以及設置 shell 變量的新變量值,這篇文章主要介紹了Shell命令解析之set命令的用法和參數(shù)詳解,需要的朋友可以參考下
    2023-10-10
  • 總結(jié)的7個shell字符串操作方法和實例分享

    總結(jié)的7個shell字符串操作方法和實例分享

    這篇文章主要介紹了總結(jié)的7個shell字符串操作方法和實例分享,包括長度獲取、查找位置、字符截取、匹配查詢等,需要的朋友可以參考下
    2014-07-07

最新評論