Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux cut 指令擷取文字欄位完整用法指南

編輯:Linux 系統常見問題解答

面對結構化文字 (CSV、日誌、/etc/passwd 等),需垂直切分欄位時,cut 是最輕量高效的工具。本文詳細說明三種切分模式 (位元組、字元、欄位)、分隔符自訂、輸出格式控制與實戰範例。

指令語法


cut -b 列表 [-n] [檔案...]     # 依位元組位置切分
cut -c 列表 [檔案...]           # 依字元位置切分
cut -f 列表 [-d 分隔符] [-s] [檔案...]  # 依欄位切分 (最常用)

核心參數

參數功能
-b, --bytes=LIST選取指定位元組範圍
-c, --characters=LIST選取指定字元範圍 (多位元組字元安全)
-d, --delimiter=CHAR指定欄位分隔符 (預設 Tab)
-f, --fields=LIST選取指定欄位編號
-s, --only-delimited僅輸出含分隔符的行 (忽略無分隔符行)
--output-delimiter=STR輸出時使用指定分隔符 (預設同輸入分隔符)
--complement反向選取 (排除指定範圍)

列表 (LIST) 範圍表示法

格式意義
N第 N 個 (從 1 起算)
N-第 N 個到行尾
N-M第 N 到第 M 個 (含)
-M第 1 到第 M 個
1,3,5第 1、3、5 個 (多個離散範圍)

實戰範例集

範例 1:擷取 /etc/passwd 使用者名稱 (第 1 欄,以 : 分隔)


cut -d: -f1 /etc/passwd
# 輸出:root, bin, daemon, adm, lp...

範例 2:擷取第 1、3、7 欄 (用戶名、UID、Shell)


cut -d: -f1,3,7 /etc/passwd
# 輸出:root:0:/bin/bash, bin:1:/sbin/nologin...

範例 3:擷取前 4 個字元


cut -c1-4 /etc/passwd
# 輸出:root, bin:, daem, adm:...

範例 4:擷取第 1 個位元組


cut -b1 /etc/passwd | head -5
# 輸出:r, b, d, a, l

範例 5:自訂分隔符為 Tab 的檔案


# 檔案 a.txt 內容 (Tab 分隔):
# ssss    affff    dddd    fe    fsc
# rrr     f       adfa    eer   ddd

cut -f1,3 -d $'\t' a.txt
# 輸出:
# ssss    dddd
# rrr     adfa

範例 6:反向選取 — 排除第 2 欄


cut --complement -d: -f2 /etc/passwd
# 輸出除密碼欄位外所有欄位

範例 7:修改輸出分隔符為 |


cut -d: -f1,3,7 --output-delimiter="|" /etc/passwd
# 輸出:root|0|/bin/bash

範例 8:管線搭配 — 找出 UID ≥ 1000 的一般使用者


cut -d: -f1,3,7 /etc/passwd | awk -F: '$2 >= 1000'
# 或純 cut + grep (較不精確)
cut -d: -f1,3,7 /etc/passwd | grep -E ':[1-9][0-9]{3,}:'

進階搭配技巧

  • cut -d' ' -f1 搭配 sort | uniq -c | sort -nr 統計日誌首欄 (IP/用戶) 出現頻率 Top 10
  • ps aux | cut -c1-80 截斷過長輸出適應終端寬度
  • cut -f1 -d' ' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10 統計 Nginx 存取日誌 Top 10 客戶端 IP

對比:cut vs awk vs sed

Copyright © Windows教程網 All Rights Reserved
工具優勢適用場景
cut極簡、極快、記憶體占用極低、語法單一固定寬度/固定分隔符欄位擷取、大檔案高效能
awk可程式化、支援正則、數學運算、多欄位重組複雜文字處理、條件篩選、報表產生
sed串流編輯、正則替換、行範圍操作文字替換、刪除特定行、插入行