提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 一、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 —— 去除 連續 重復行
注意:只能去掉相鄰的重復行,所以通常先 sort
再 uniq
。
語法: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 —— 替換 / 刪除 / 壓縮