
Linux 中的 cut 命令是文字處理的重要實用程序,旨在從文件的每一行或管道輸入中提取特定的段。此命令不會修改原始文件,而是讀取資料並在標準輸出中顯示所需的部分。在本指南中,我們將深入研究 Linux 中 cut 命令的功能,並提供實際的真實範例來示範其用法。
探索 cut 指令
該cut
命令對於處理結構化文字的任何人都很有用,有助於在類別 Unix 環境中進行有效的資料操作和提取。透過根據位元組位置、字元位置、分隔符號或欄位提取行的部分,cut 對於過濾和組織 shell 腳本和命令列操作中的資料非常有用。它的應用範圍從從 CSV 檔案中檢索特定列到修剪不必要的字元或分析日誌。儘管 cut 通常直接用於文件,但在管道中使用時,它也可以與其他命令的輸出無縫互動。
cut 指令的基本語法
cut 指令很簡單,利用選項後面跟著檔名。文法如下:
cut [OPTIONS] [FILE]
在這個結構中,OPTIONS 決定了 cut 指令如何運作,讓您可以選擇欄位分隔符號(如逗號)、選擇特定欄位、設定範圍、排除缺少分隔符號的行等功能。如果未指定文件,cut 將從標準輸入讀取。此外,您可以提供多個文件,這些文件將被視為組合實體進行處理。
常用選項
剪切命令提供了多種選項來精確定位要提取的文字片段。以下是一些最常用的:
- -f或–fields=LIST:允許根據指定的分隔符號選擇特定欄位。
- -b或–bytes=LIST:從每一行擷取指定的位元組。
- -c或–characters=LIST:從每一行檢索特定字元。
- -d或–delimiter:設定自訂分隔符號而不是預設製表符。
- –complement:輸出除指定欄位、位元組或字元之外的所有內容。
- -s或–only-delimited:跳過缺少分隔符號的行;預設包含此類行。
- –output-delimiter:允許選擇不同的輸出分隔符,與輸入分隔符號形成對比。
-f
、、-b
和選項-c
利用 LIST 來定義要擷取的內容。您可以指定以下內容:
- 單一數字,例如 2。
- 用逗號分隔的多個數字,例如 1, 3, 5。
- 類似 2-4 的範圍(提取從 2 到 4 的值)。
-
N-
表示從位置 N 提取到末端。 -
-M
表示從起始點擷取至位置 M。
在 Linux 中使用 cut 指令
為了說明 cut 指令的功能,讓我們執行一些實際的範例。首先,讓我們使用 echo 指令建立一個名為「mte.csv」的範例檔案:
echo -e "empID, empName, empDesig\n101, Anees, Author\n102, Asghar, Manager\n103, Damian, CEO" > mte.csv

接下來,我們可以使用 cat 指令檢查檔案的內容:
cat mte.csv

值得一提的是,cut 指令僅顯示指定的輸出,而不會改變檔案本身。
按字元擷取數據
若要按位置提取字符,請使用-c
cut 命令的選項:
cut -c 1, 8 mte.csv
此命令從每行中提取第一個和第八個字元:

若要提取指定範圍內的字符,請應用以下命令:
cut -c 1-8 mte.csv
擷取每行中位置 1 至 8 的字元:

按位元組提取
若要擷取特定位元組,請使用-b
cut 指令的選項:
cut -b 1-3 mte.csv
此命令從文件的每一行中提取前三個位元組mte.csv
:

按字段(列)提取
要從文件中提取整個字段,請使用帶有-f
和-d
選項的 cut 命令:
cut -d', ' -f2 mte.csv
在此命令中,-d', '
指定逗號作為分隔符,而-f2
表示 cut 應從每行中提取第二個欄位:

在 cut 中實作自訂分隔符
儘管 cut 預設使用製表符作為分隔符,但如果欄位由不同的字元分隔,請使用-d
指定正確的字元。例如,要從空格分隔的句子中提取第五個單詞,您可以使用:
echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d ' ' -f 5

提取過程中排除特定字段
--complement
透過使用cut 命令的選項,您可以在從文件中提取文字時省略某些欄位。此選項指定 cut 應輸出除指定欄位之外的所有欄位:
cut -d', ' -f1 mte.csv --complement
此命令跳過第一列並返回其餘內容:

修改預設輸出分隔符
預設情況下,擷取欄位時,cut 指令會在輸出中保留輸入分隔符號。但是,您可以使用以下--output-delimiter
選項來變更輸出分隔符號:
cut -d', ' -f1-3 --output-delimiter='-' mte.csv
此命令使用連字符作為輸出中的分隔符號:

將 cut 與其他 Linux 指令結合使用
cut 指令也可以透過管道符 | 與其他 Linux 指令結合使用。象徵。例如,以下命令從who
命令的每個輸出行中提取前五個字元:
who | cut -c 1-5

在另一個範例中,您可以將 cut 命令與 head 一起使用來顯示「mte.csv」的前兩行,僅提取 empName 和 empDesig 欄位:
head -n 2 mte.csv | cut -d ', ' -f2, 3

使用 Linux cut 指令瀏覽不規則資料格式
當處理格式正確且具有一致分隔符號(如逗號或製表符)的資料時,cut 指令表現優異。但是,如果遇到間距不一致或混合分隔符號的文件,單獨應用 cut 可能會產生不令人滿意的結果。為了解決這些情況,通常最好使用tr
或 之類的命令提前清理數據sed
,以確保 cut 可以有效地提取正確的部分。
管理多餘空間
考慮一個名為“mteData.txt”的文件,其中字段由不同的空格分隔:
cat mteData.txt

由於 cut 預期單一分隔符,因此tr
在應用 cut 之前利用它對間距進行標準化:
cat mteData.txt | tr -s ' ' | cut -d ' ' -f1-2
此命令處理“mteData.txt”,使用將多個空格替換為一個空格tr
,然後提取前兩個欄位:

管理混合分隔符
如果檔案使用空格和逗號的組合,請使用 來規範格式sed
。例如,名為「mteData1.txt」的檔案包含:
cat mteData1.txt

利用sed
cut 將所有空格轉換為逗號,然後擷取第一個和第三個欄位:
sed 's/ /, /g' mteData1.txt | cut -d ', ' -f1, 3

結論
在本文中,我們揭示了 Linux cut 命令的功能,它是從檔案或管道輸入中提取資料的重要工具。透過其簡單的語法,您可以毫不費力地根據指定的分隔符號來取得字元、位元組或欄位。此外,我們還展示瞭如何將 cut 命令與其他實用程式(如tr
、sed
和)結合起來head
管理不乾淨的資料並實現更有效率的輸出。無論您處理的是 CSV 檔案、分析日誌還是清理數據,cut 命令都是類別 Unix 環境中文字處理不可或缺的資產。
常見問題
1. Linux 中 cut 指令的主要用途是什麼?
Linux 中的 cut 命令主要用於從檔案或其他命令的輸出中提取特定的文字部分。它使用戶能夠根據分隔符號、位元組位置或字元位置有效地操作和格式化資料。
2.我可以將 cut 指令與其他 Linux 指令結合使用嗎?
是的! cut 指令可以使用管道符號 (|) 與其他 Linux 指令無縫整合。這允許強大的資料處理,使您能夠過濾和格式化來自各種命令的輸出。
3.如何在使用 cut 指令時指定自訂分隔符號?
您可以使用-d
選項後面跟著所需的分隔符號來指定自訂分隔符號。例如,要使用逗號作為分隔符,可以使用-d', '
。
發佈留言 ▼