Linux命令更新-sort 和 uniq 命令

簡介


sortuniq 都是 Linux 系統中常用的文本處理命令。

  • sort 命令用于對文件內容進行排序。

  • uniq 命令用于去除文件中重復出現的行。

1. sort 命令

命令格式

sort [選項] [文件]
  • 選項

  • -n: 按照數字進行排序

  • -r: 反向排序

  • -c: 統計每個元素出現的次數

  • -t 分隔符: 指定分隔符,默認為空格

  • -k 列號: 指定排序列,從左到右從 1 開始計數

  • -u: 僅顯示不重復的行

命令功能

sort 命令可以對文件內容進行排序,支持多種排序方式,包括:

  • 按數字排序

  • 按字符串排序

  • 按自定義列排序

  • 正序排序

  • 反序排序

命令用法

1. 按數字排序

sort numbers.txt

例如,將文件 numbers.txt 中的內容按數字從小到大排序:

10
2
5
4
3

2. 按字符串排序

sort words.txt

例如,將文件 words.txt 中的內容按字母順序排序:

apple
banana
cherry
grape
orange

3. 按自定義列排序

sort -k 3 students.txt

例如,將文件 students.txt 中的內容按第三列(成績)從高到低排序:

張三,15,90
李四,18,80
王五,17,70
趙六,16,60

4. 正序排序

默認情況下,sort 命令會對文件內容進行正序排序。

sort numbers.txt

5. 反向排序

sort -r numbers.txt

例如,將文件 numbers.txt 中的內容按數字從大到小排序:

10
5
4
3
2

6. 統計每個元素出現的次數

sort -c words.txt

例如,統計文件 words.txt 中每個單詞出現的次數:

2 apple
1 banana
1 cherry
2 grape
1 orange

7. 指定分隔符

sort -t : students.txt

例如,將文件 students.txt 中的內容按第一列(姓名)排序,并使用冒號作為分隔符:

張三:15:90
李四:18:80
王五:17:70
趙六:16:60

8. 僅顯示不重復的行

sort -u words.txt

例如,顯示文件 words.txt 中不重復的單詞:

apple
banana
cherry
grape
orange

2. uniq 命令

命令格式

uniq [選項] [文件]
  • 選項

  • -c: 統計每個元素出現的次數

  • -d: 顯示重復的行

  • -u: 僅顯示不重復的行

命令功能

uniq 命令用于去除文件中重復出現的行,支持多種操作,包括:

  • 僅顯示不重復的行

  • 顯示重復的行

  • 統計每個元素出現的次數

命令用法

1. 僅顯示不重復的行

uniq words.txt

例如,顯示文件 words.txt 中不重復的單詞:

apple
banana
cherry
grape
orange

2. 顯示重復的行

uniq -d words.txt

例如,顯示文件 words.txt 中重復出現的單詞:

apple
banana

3. 統計每個元素出現的次數

uniq -c words.txt

例如,統計文件 words.txt 中每個單詞出現的次數:

2 apple
1 banana
1 cherry
2 grape
1 orange

運維案例

案例一:統計網站日志中的訪問次數

假設您需要統計網站日志文件 /var/log/nginx/access.log 中每個 IP 地址的訪問次數。

步驟:

  1. 提取 IP 地址:
cat /var/log/nginx/access.log | awk '{print $1}' > ips.txt
  1. 排序并去除重復的 IP 地址:
sort -u ips.txt > unique_ips.txt
  1. 統計每個 IP 地址的訪問次數:
for ip in $(cat unique_ips.txt); docount=$(grep -c "$ip" /var/log/nginx/access.log)echo "$ip $count"
done > ip_counts.txt

結果:

192.168.1.10 100
192.168.1.11 50
192.168.1.12 20

案例二:比較兩個文件的差異并忽略空白行

假設您需要比較兩個文件 /file1.txt/file2.txt 的差異,并忽略空白行。

步驟:

  1. 刪除兩個文件中的空白行:
sed -i '/^ *$/d' file1.txt
sed -i '/^ *$/d' file2.txt
  1. 比較兩個文件并忽略重復行:
comm -3 file1.txt file2.txt | grep -v '^$'

結果:

+ line1
- line2

案例三:從多個文件中提取唯一內容

假設您需要從多個文件(file1.txtfile2.txtfile3.txt)中提取唯一內容。

步驟:

  1. 將多個文件的內容合并到一個文件中:
cat file1.txt file2.txt file3.txt > all_lines.txt
  1. 排序并去除重復行:
sort -u all_lines.txt > unique_lines.txt

結果:

line1
line2
line3

注意:

  • 本文檔僅介紹了 sortuniq 命令的基本使用方法和常見運維案例,并未涵蓋所有功能和參數。

  • 在使用 sortuniq 命令進行實際操作時,請注意備份文件,以免造成數據丟失。

  • 可以根據實際需要組合使用 sortuniq 命令,實現更復雜的功能。

希望這份文檔能夠幫助您更好地了解和使用 sortuniq 命令。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45592.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么錄制視頻?電腦錄制,試試這3種方法

在數字化快速發展的時代,視頻已經成為我們傳遞信息、分享生活、表達情感的重要載體。每一個人都希望自己能夠掌握視頻錄制技巧,輕松駕馭影像的力量,創造出屬于自己的視覺盛宴。 那么,怎么錄制視頻呢?首先選擇一款好用…

vue腳手架配置代理請求

在 Vue 腳手架中,可以通過配置vue.config.js文件來設置代理請求,以解決跨域問題或實現其他代理需求。以下是兩種常見的配置方式: 方法一: 在vue.config.js中添加如下配置: module.exports {devServer: {proxy: http…

《信息與電腦(理論版)》是什么級別的期刊?是正規期刊嗎?能評職稱嗎?

問題解答 問:《信息與電腦(理論版)》是不是核心期刊? 答:不是,是知網收錄的正規學術期刊。 問:《信息與電腦(理論版)》級別? 答:省級。主管單位:北京電子控股有限責任公司 主辦…

AI安全入門-人工智能數據與模型安全

參考 人工智能數據與模型安全 from 復旦大學視覺與學習實驗室 文章目錄 0. 計算機安全學術知名公眾號1. 概述數據安全模型安全 3. 人工智能安全基礎3.1 基本概念攻擊者攻擊方法受害者受害數據受害模型防御者防御方法威脅模型目標數據替代數據替代模型 3.2 威脅模型3.2.1 白盒威…

實踐致知第16享:設置Word中某一頁橫著的效果及操作

一、背景需求 小姑電話說:現在有個word文檔,里面有個表格太長(如下圖所示),希望這一個設置成橫的,其余頁還是保持豎的! 二、解決方案 1、將鼠標放置在該頁的最前面閃爍,然后選擇“頁面”》“↘…

Python面經

文章目錄 Python基本概念1. Python是**解釋型**語言還是**編譯型**語言2. Python是**面向對象**語言還是面向過程語言3. Python基本數據類型4.append和 extend區別5.del、pop和remove區別6. sort和sorted區別介紹一下Python 中的字符串編碼is 和 的區別*arg 和**kwarg作用淺拷…

Electron 進程間通信

文章目錄 渲染進程到主進程(單向)渲染進程到主進程(雙向)主進程到渲染進程 (單向,可模擬雙向) 渲染進程到主進程(單向) send (render 發送)on &a…

【Stable Diffusion】(基礎篇三)—— 圖生圖基礎

圖生圖基礎 本系列筆記主要參考B站nenly同學的視頻教程,傳送門:B站第一套系統的AI繪畫課!零基礎學會Stable Diffusion,這絕對是你看過的最容易上手的AI繪畫教程 | SD WebUI 保姆級攻略_嗶哩嗶哩_bilibili 本文主要講解如何使用S…

客戶端與服務端之間的通信連接

目錄 那什么是Socket? 什么是ServerSocket? 代碼展示: 代碼解析: 補充: 輸入流(InputStream): 輸出流(OutputStream): BufferedReader 是如何提高讀取效率的&a…

K8s集群初始化遇到的問題

kubectl describe pod coredns-545d6fc579-s9g5s -n kube-system 找到原因1:CoreDNS Pod 處于 Pending 狀態的原因是集群中的節點都帶有 node.kubernetes.io/not-ready 污點 journalctl -u kubelet -f 14:57:59.178592 3553 remote_image.go:114] "PullIma…

《簡歷寶典》12 - 簡歷中“項目經歷”,內功學習 - 下篇

這一小節呢,我們繼續說簡歷中 “項目經歷” 的一些內功心法。因為項目經歷比較核心,所以說完了,內功呢,我們會著重說一下 實戰部分。 目錄 1 所用技術的考慮 2 自我成長的突出 3 綜合使用STAR法則 4 小節 1 所用技術的考慮 …

如何評估AI模型:評估指標的分類、方法及案例解析

如何評估AI模型:評估指標的分類、方法及案例解析 引言第一部分:評估指標的分類第二部分:評估指標的數學基礎第三部分:評估指標的選擇與應用第四部分:評估指標的局限性第五部分:案例研究第六部分&#xff1a…

pear-admin-fast項目修改為集成PostgreSQL啟動

全局搜索代碼中的sysdate(),修改為now() 【前者是mysql特有的,后者是postgre特有的】修改application-dev.yml中的數據庫url使用DBeaver把mysql中的數據庫表導出csv,再從postgre中導入csv腳本轉換后出現了bpchar(xx)類型,那么一定…

用友U8存貨分類按層級取數SQL語句

SELECT cInvCCode 分類編碼, cInvCName 分類名稱, iInvCGrade 分類層級, ss.bInvCEnd 是否是末級, aa.* FROM InventoryClass ss LEFT JOIN ( SELECT * FROM ( SELECT cInvCCode AS 一級分類編碼, …

python數據可視化(6)——繪制散點圖

課程學習來源:b站up:【螞蟻學python】 【課程鏈接:【【數據可視化】Python數據圖表可視化入門到實戰】】 【課程資料鏈接:【鏈接】】 Python繪制散點圖查看BMI與保險費的關系 散點圖: 用兩組數據構成多個坐標點,考察…

如何降低老年人患帕金森病的風險?

降低老年人患帕金森病風險的方法 避免接觸有害物質:長期接觸某些化學物質、農藥或其他有害物質可能會增加患帕金森病的風險。應減少這些物質的暴露,例如在工作或生活中采取防護措施。 健康飲食:均衡飲食,多吃富含抗氧化劑的食物&a…

做了一個萬能搜索框

最近給網頁做了一個搜索框,現在搜索比以前更加方便了,下面簡單介紹一下如何使用 我們進入網頁版(app.zyjj.cc)點擊右上角的搜索就可以看到這個新版的搜索框了 目前支持中文、拼音、首字母等多種搜索方式,大家可以隨意…

【Python】Python-docx使用實例 科技檔案封面批量生成

使用背景 根據excel表中的信息,按照word模板格式,每條信息生成一個對應的模板及文件名。 我這里的情況是將科技檔案的封面格式按照案卷表的明細批量生成。 (單位的檔案軟件太雞肋了,沒有這個功能) 代碼整篇 工程檔…

【Linux】常見指令(下)

【Linux】常見指令(下) 通配符 *man指令cp指令echo指令cat指令(簡單介紹)cp指令 mv指令alias指令which ctrl ccat指令linux下一切皆文件 more指令less指令head指令tail指令管道 通配符 ‘*’ 通配符’ *‘,是可以匹配…

4 C 語言控制流與循環結構的深入解讀

目錄 1 復雜表達式的計算過程 2 if-else語句 2.1 基本結構及示例 2.2 if-else if 多分支 2.3 嵌套 if-else 2.4 懸空的 else 2.5 注意事項 2.5.1 if 后面不要加分號 2.5.2 省略 else 2.5.3 省略 {} 2.5.4 注意點 3 while 循環 3.1 一般形式 3.2 流程特點 3.3 注…