shell中命令小工具:cut、sort、uniq,tr的使用方式

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 前言
    • 一、cut —— 按列或字符截取
      • 1. 常用選項
      • 2. 示例
    • 二、sort —— 排序(默認按行首字符升序)
      • 1. 常用選項
      • 常用 `sort` 命令選項
    • 三、uniq —— 去除 **連續** 重復行
      • 1. 常用選項
      • 2. 示例
      • 實戰:查看登錄用戶
    • 四、tr —— 字符替換 / 刪除 / 壓縮重復
      • 1. 常用選項
      • 2. 示例
        • 示例:
    • 五、常見組合面試題(擴展)
      • 1. 統計當前連接的主機數
        • 1.1 命令解析
      • 2. 統計當前主機的連接狀態
      • 3. 查看當前登錄用戶
      • 4. 查看登錄過系統的用戶
    • 六、總結口訣


前言

提示:這里可以添加本文要記錄的大概內容:

例如:隨著人工智能的不斷發展,機器學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎內容。


一、cut —— 按列或字符截取

常用于從文本中抽取需要的字段。

1. 常用選項

  • -b:按字節截取
  • -c:按字符截取(中文推薦用 -c
  • -d:指定分隔符(默認 TAB)
  • -f:指定字段(需配合 -d

2. 示例

cut -d':' -f1 /etc/passwd        # 截取第1列(用戶名)

在這里插入圖片描述

cut -d':' -f3 /etc/passwd        # 截取第3列(UID)

在這里插入圖片描述

cut -d':' -f1,3 /etc/passwd      # 截取第1和3列

在這里插入圖片描述

cut -c 2 name.txt                # 截取第2個字符

在這里插入圖片描述

who

在這里插入圖片描述

who | cut -b 3   #按字節截取第三個字符

在這里插入圖片描述

who | cut -c 3 #按字符截取

在這里插入圖片描述

cat name | cut -b 2
cat name | cut -c 2   #中文字符截取

在這里插入圖片描述

注意:cut只擅長于處理單個字符為間隔的文本


二、sort —— 排序(默認按行首字符升序)

1. 常用選項

常用 sort 命令選項

選項功能描述
-t指定字段分隔符(默認為空格或制表符)
-k指定排序的關鍵字段(可指定起止列)
-n按數值大小排序(默認按字典序)
-r降序排列(默認升序)
-u去除重復行(類似 uniq 的功能)
-o將結果輸出到指定文件(而非標準輸出)

三、uniq —— 去除 連續 重復行

注意:只能去掉相鄰的重復行,所以通常先 sortuniq

語法:uniq [選項] 參數

1. 常用選項

  • -c:對重復的行進行計數
  • -d:只顯示重復行
  • -u:只顯示唯一行

2. 示例

# 創建一個水果類型的文件,一共9行內容實例
cat fruit.txt 
apple
apple
peache
pear
banana
cherry
cherry
banana
orangeuniq  fruit.txt                      # 去掉相鄰重復行
sort fruit.txt | uniq                # 全局去重
sort fruit.txt | uniq -c             # 統計每行出現次數
sort fruit.txt | uniq -d             # 只顯示重復行
sort fruit.txt | uniq -u             # 只顯示不重復行
# 或者這樣寫
cat fruit.txt | sort | uniq -u# 實戰:查看登錄用戶
# 示例一
who | awk '{print $1}'| uniq
# 示例二:查看登陸過系統的用戶
last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp
uniq  fruit.txt                      # 去掉相鄰重復行

在這里插入圖片描述

sort fruit.txt | uniq                # 全局去重

在這里插入圖片描述

sort fruit.txt | uniq -c             # 統計每行出現次數

在這里插入圖片描述

sort fruit.txt | uniq -d             # 只顯示重復行

在這里插入圖片描述

sort fruit.txt | uniq -u             # 只顯示不重復行

在這里插入圖片描述

實戰:查看登錄用戶

#### 示例一
who | awk '{print $1}'| uniq

在這里插入圖片描述

#### 示例二:查看登陸過系統的用戶

last | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}?' | sort | uniq…" | grep -v wtmp
在這里插入圖片描述


四、tr —— 字符替換 / 刪除 / 壓縮重復

主要用于 單個字符處理,不適合字段級別。

語法:tr [選項]… SET1 [SET2]

從標準輸入中替換、縮減和/或刪除字符,并將結果寫到標準輸出。

1. 常用選項

  • -d:刪除字符
  • -s:壓縮重復字符,只保留一個

2. 示例

tr 'a-z' 'A-Z' < fruit.txt           # 小寫轉大寫
# 或
cat fruit.txt | tr 'a-z' 'A-Z'
cat fruit | tr 'apple' 'APPLE'       # 替換是一一對應的字母的替換
cat fruit | tr 'a' ' '               # 把替換的字符用單引號引起來,包括特殊字
cat fruit | tr 'apple' 'star'        # a替換成s,p替換成a,le替換成r
tr 'a' '/' < fruit.txt               # 替換 a -> /   多個字符替換成一個tr -d 'a' < fruit.txt                # 刪除所有 a
tr -d '\n' < fruit.txt               # 刪除換行符
tr -s 'p' < fruit.txt                # 連續 p 壓縮成一個
示例:

在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述


五、常見組合面試題(擴展)

1. 統計當前連接的主機數

ss -nt | tr -s " " | cut -d " " -f5 | cut -d ":" -f1 | sort | uniq -c

在這里插入圖片描述

1.1 命令解析
  • ss -nt:查看 TCP 連接,不解析服務名
  • tr -s " ":壓縮多個空格為一個
  • cut -d " " -f5:取第5列(對端地址:端口)
  • cut -d ":" -f1:取 IP 地址部分
  • sort:排序
  • uniq -c:統計重復數量

2. 統計當前主機的連接狀態

ss -nta | grep -v '^State' | cut -d" " -f1 | sort | uniq -c

在這里插入圖片描述

3. 查看當前登錄用戶

who | awk '{print $1}' | uniq

在這里插入圖片描述

4. 查看登錄過系統的用戶

last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp

在這里插入圖片描述


六、總結口訣

  • cut —— 截列
  • sort —— 排序
  • uniq —— 去重(必須連續,常和 sort 聯合)
  • tr —— 替換 / 刪除 / 壓縮

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

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

相關文章

【Linux】Linux開發必備:Git版本控制與GDB調試全指南

前言&#xff1a;在Linux開發流程中&#xff0c;版本控制與程序調試是保障項目穩定性和開發效率的兩大核心環節。Git作為當前最主流的分布式版本控制系統&#xff0c;能高效管理代碼迭代、追蹤修改記錄并支持多人協同開發&#xff1b;GDB&#xff08;GNU調試器&#xff09;是Li…

實現 TypeScript 內置工具類型(源碼解析與實現)

目標讀者&#xff1a;已經熟悉 TypeScript 基礎語法、泛型、條件類型的同學。本文按常見工具類型的分類與順序實現并解釋 Partial、Required、Readonly、Pick、Omit、Record、Exclude、Extract、NonNullable、ReturnType、Parameters、ConstructorParameters、InstanceType、Th…

Spring Boot + Nacos 配置中心示例工程

1?? 工程結構 nacos-demo├── pom.xml└── src├── main│ ├── java│ │ └── com.example.nacosdemo│ │ ├── NacosDemoApplication.java│ │ ├── config│ │ │ └── AppProperties.java│ │ └── cont…

(二)文件管理-基礎命令-pwd命令的使用

文章目錄1. 命令格式2. 基本用法3. 高級用法4. 注意事項1. 命令格式 pwd [OPTION]...[OPTION]: 可選選項&#xff0c;用于改變命令的默認行為。最主要的兩個選項是 -L 和 -P。它不需要任何參數&#xff08;如文件名或目錄名&#xff09; 2. 基本用法 用法&#xff1a;pwd 是…

Leetcode_202.快樂數_三種方法解決(普通方法解決,哈希表解決,循環鏈表的性質解決_快慢指針)

目錄第一種方法&#xff1a;暴力解法暴力ac代碼&#xff1a;第二種方法&#xff1a;哈希表哈希表ac代碼:第三種方法&#xff1a;根據循環鏈表的性質(快慢指針)第一種方法&#xff1a;暴力解法 最暴力的思路就是直接使用循環往下一直計算&#xff0c;這樣特別浪費時間&#xff…

代碼隨想錄刷題Day48

這次博客主要是對做過的關于二叉樹系列的題目進行整理和分類。二叉樹&#xff0c;要處理整個樹&#xff0c;一般少不了遍歷。遍歷主要可以分為&#xff1a;遞歸系列、層序遍歷。如果不遍歷的話&#xff0c;那就是處理特殊的樹了&#xff0c;比如完全二叉樹。遞歸系列基本的遞歸…

汽車工裝結構件3D掃描尺寸測量公差比對-中科米堆CASAIM

汽車制造過程中&#xff0c;工裝結構件的尺寸精度對整車裝配質量和生產進度有重要影響。傳統測量工具如卡尺和三坐標測量機采用接觸式工作方式&#xff0c;檢測過程耗時較長&#xff0c;對于具有復雜曲面特征的工件&#xff0c;難以全面獲取尺寸數據。激光三維掃描技術改變了傳…

Docker Pull 代理配置方法

本文介紹通過網絡代理加速Docker鏡像拉取的方法。 配置方法 當執行docker pull從Docker Hub 拉取鏡像時&#xff0c;其網絡連接由守護進程docker daemon進行維護。 要修改其代理設置&#xff0c;可配置其systemd服務&#xff0c;步驟如下&#xff1a; &#xff08;1&#xf…

機電裝置:從基礎原理到前沿應用的全方位解析

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 1 機電裝置的基本概念與發展歷程 機電裝置&#xff08;Mechatronic D…

《SVA斷言系統學習之路》【03】關于布爾表達式

序列中使用的表達式基于其所含變量的采樣值進行評估。表達式評估的結果為布爾值&#xff0c;其解釋方式與過程性if語句條件中的表達式完全相同&#xff1a;若表達式計算結果為X、Z 或 0&#xff0c;則被解釋為假&#xff1b;否則即為真。但是&#xff0c;對可出現在并發斷言中的…

指針高級(2)

6.數組指針#include <stdio.h> int main() {/*練習&#xff1a;利用指針遍歷數組*///1.定義數組int arr[] { 10,20,30,40,50 };int len sizeof(arr) / sizeof(int);//2.獲取數組的指針//實際上獲取的&#xff1a;數組的首地址int* p1 arr;int* p2 &arr[0];printf…

如何高效記單詞之:抓住首字母——以find、fund、fond、font為例

find、fund、fond、font這幾個單詞&#xff0c;你都認識嗎&#xff1f;這幾個單詞&#xff0c;意思大體如下&#xff1a; find v.找到&#xff1b;發現fund n.基金fond a.喜歡的&#xff1b;喜愛的&#xff1b;深情的font n.字體&#xff0c;字型&#xff0c;字形 這幾個單詞在…

Ubuntu下把 SD 卡格式化為 FAT32

在 Ubuntu 下把 SD 卡格式化為 FAT32&#xff0c;按下面做&#xff08;會抹掉整卡數據??&#xff09;&#xff1a; 1) 找到你的 SD 卡設備名 lsblk -p記下整盤設備&#xff0c;比如 /dev/sdb&#xff08;USB 讀卡器常見&#xff09;或 /dev/mmcblk0&#xff08;內置讀卡器&am…

涉私數據安全與可控匿名化利用機制研究(上)

文章目錄前言一、涉私數據的概述及分類&#xff08;一&#xff09;涉私數據的“知情同意原則”&#xff08;二&#xff09;涉私數據的分類二、涉私數據可控匿名化利用機制&#xff08;一&#xff09;數據產品與涉私數據的利用形式&#xff08;二&#xff09;通過可信數據空間受…

Redis 的跳躍表:像商場多層導航系統一樣的有序結構

目錄 一 、從 "超市貨架" 的痛點看跳躍表的價值 1.1、跳躍表與商場導航系統的結構對應 1. 1.1、zskiplistNode&#xff1a;帶導航標記的 "商品"&#xff08;跳躍表節點&#xff09; 1.1.1.1、level []&#xff1a;商品上的多層導航標記 1.1.1.2、back…

小程序點擊之數據綁定

<return /><view class"all-wrap" style"padding-top:{{topHeight}}px;"><view class"my-title">我的收藏</view><scroll-viewclass"collect-list-container"scroll-yscroll-top"{{scrollTop}}"…

數據結構——順序表和單向鏈表(2)

目錄 前言 一、單向鏈表 1、基本概念 2、單向鏈表的設計 &#xff08;1&#xff09;節點設計 &#xff08;2&#xff09;初始化空單向鏈表 &#xff08;3&#xff09;、初始化數據節點 &#xff08;4&#xff09;數據節點 &#xff08;5&#xff09;判斷鏈表是否為空 …

More Effective C++ 條款26:限制某個類所能產生的對象數量

More Effective C 條款26&#xff1a;限制某個類所能產生的對象數量核心思想&#xff1a;通過控制類的實例化過程&#xff0c;限制程序中該類的對象數量&#xff0c;可以防止資源過度使用&#xff0c;確保系統資源合理分配&#xff0c;并實現單例或有限實例模式。 &#x1f680…

CMS系統維護中常見的安全威脅及防護指南!

內容管理系統&#xff08;CMS&#xff09;已成為網站建設的核心工具&#xff0c;但隨之而來的安全風險卻常被低估。超過70%的網站使用CMS構建&#xff0c;而其中近半數曾遭遇安全漏洞威脅。作為運維人員和開發者&#xff0c;了解這些安全威脅并采取相應防護措施至關重要。 一、…

springboot knife4j 接口文檔入門與實戰

Spring Boot3 Knife4j 項目地址https://gitee.com/supervol/loong-springboot-study&#xff08;記得給個start&#xff0c;感謝&#xff09;Knife4j 介紹在國內 Java 開發領域&#xff0c;Knife4j 是一款廣受歡迎的 API 文檔工具&#xff0c;它基于 OpenAPI 規范&#xff0c;在…