如何精準快速處理文字資料? 5分鐘學會 cut 指令教學與常用範例整理

在日常的 Linux 使用中,我們經常會遇到需要處理文字資料的情境,而這時候就可以利用強大的指令工具來完成任務。其中,cut 指令是一個非常實用的工具,它可以讓我們輕鬆地擷取部分字元或欄位,讓資料處理變得更加便捷。在這篇文章中,我將帶你深入了解 cut 指令的使用方式,並提供一些常見的使用範例。




在日常的 Linux 使用中,我們經常會遇到需要處理文字資料的情境,而這時候就可以利用強大的指令工具來完成任務。其中,cut 指令是一個非常實用的工具,它可以讓我們輕鬆地擷取部分字元或欄位,讓資料處理變得更加便捷。在這篇文章中,我將帶你深入了解 cut 指令的使用方式,並提供一些常見的使用範例。

指令概述

cut 指令的基本功能是從文字資料中剪下部分字元或欄位,然後將其輸出到終端或檔案中。它的語法如下:

cut OPTION... [FILE]...

擷取固定位置字元

如果想要從文字中擷取固定位置的字元,可以使用 -c 選項。例如,假設我們有一個文字檔案 data.txt 包含以下內容:

Hello, World!

要擷取第 1 個和第 7 個字元,可以執行以下指令:cut -c 1,7 data.txt

這將輸出:

H,o

擷取欄位

在處理以分隔符號分隔的資料時,我們常常需要擷取特定的欄位。這時候,可以使用 -f 選項。假設我們有一個以逗號分隔的 CSV 檔案 students.csv

Name,Age,Grade
Alice,25,A
Bob,22,B
Carol,28,A

如果要擷取第 1 個欄位(姓名),可以執行以下指令:cut -d ',' -f 1 students.csv

這將輸出:

Name
Alice
Bob
Carol

自定義分隔符號

cut 指令預設使用制表符作為分隔符號,可以使用 -d 選項指定不同的分隔符號。例如,如果我們有一個以空格分隔的檔案 data.txt

Apple Orange Banana

可以這樣擷取第 2 個欄位:cut -d ' ' -f 2 data.txt

輸出將是:

Orange

擷取範圍

cut 指令也支援擷取範圍。如果我們有一個文字檔案 numbers.txt 包含數字 1 到 10,每行一個數字:

1
2
3
4
5
6
7
8
9
10

我們可以這樣擷取第 3 到第 5 行的數字:cut -d $'\n' -f 3-5 numbers.txt

輸出將是:

3
4
5

排除字元的使用和輸出

除了擷取特定的字元或欄位外,cut 指令還允許我們排除不需要的字元,這在某些情況下非常有用。假設我們有一個文字檔案 sentence.txt 包含一個句子:The quick brown fox jumps over the lazy dog.

如果我們想要排除字元 10 到 20,可以使用 -c 選項搭配 --complement 選項來達成:

cut -c 10-20 --complement sentence.txt

這將輸出:The quick over the lazy dog.

排除欄位的使用和輸出

類似地,我們也可以排除特定的欄位,這在處理資料時能夠派上用場。假設我們有一個以制表符分隔的檔案 data.tsv

Name   Age   Gender
Alice  25    Female
Bob    22    Male
Carol  28    Female

要排除第 2 個欄位(年齡),可以使用 -f 選項搭配 --complement 選項:

cut -f 2 --complement data.tsv

這將輸出:

Name    Gender
Alice   Female
Bob     Male
Carol   Female

不同使用情境的使用和輸出

log 檔案檢視

grep 指令是一個用於在文字中搜索特定內容的工具。透過搭配 cut 指令,我們可以進一步過濾 grep 搜尋結果,只顯示我們感興趣的部分。

假設我們有一個日誌檔案 log.txt,其中包含不同的日誌訊息:

[INFO] User logged in from IP 192.168.1.1
[ERROR] Connection failed from IP 192.168.1.2
[INFO] Settings updated by user 5

如果我們想要只顯示所有包含 [INFO] 的日誌訊息,可以使用以下指令:

grep "\[INFO\]" log.txt | cut -d ' ' -f 3-

這將輸出:

User logged in from IP 192.168.1.1
Settings updated by user 5

透過 grep 指令找到所有包含 [INFO] 的行,然後透過 cut 指令只擷取日誌訊息的部分,我們能夠更快速地取得我們所關心的內容。

系統監控中使用

在系統監控中使用 ps aux 指令來查看執行中的進程,並使用 cut 指令擷取我們需要的進程資訊。假設我們想查看正在運行的 nginx 進程的詳細資訊:

ps aux | grep nginx | cut -d ' ' -f 2,11-

這將輸出類似以下的結果:

PID COMMAND
1234 /usr/sbin/nginx -g daemon on; master_process on;
5678 nginx: worker process

這個例子展示了如何使用 cut 指令從 ps aux 的輸出中擷取出進程的 PID(進程 ID)和命令

總結

cut 指令是一個強大且靈活的工具,用於擷取文字資料中的部分字元或欄位。無論是擷取、排除還是在日誌分析中的應用,cut 都能輕鬆勝任。通過這篇文章,我們深入探討了 cut 指令的不同用法,希望能幫助你在 Linux 文字處理任務中更加得心應手。


常見問題解答

  1. 如何指定多個分隔符號進行欄位擷取?你可以使用 -d 選項,並將多個分隔符號放在一起,例如 -d ',;' 表示以逗號或分號作為分隔符號。
  2. cut 指令是否支援正則表達式?不,cut 指令不支援正則表達式。它主要用於處理固定位置字元和簡單的分隔欄位。
  3. 能否同時擷取字元和欄位?是的,你可以同時使用 -c-f 選項來擷取字元和欄位。
  4. cut 指令是否會修改原始檔案?不,預設情況下,cut 指令不會修改原始檔案,它只會將處理結果輸出到終端或檔案中。
  5. 如何將擷取的結果輸出到新檔案?你可以使用重定向將輸出結果寫入新檔案,例如 cut -c 1,7 data.txt > output.txt
  6. 如何同時排除字元和欄位?您可以同時使用 -c-f 選項,再搭配 --complement 選項,來排除指定的字元或欄位。
  7. 排除字元和排除欄位有什麼區別?排除字元是基於字元的位置,而排除欄位則是基於分隔符號分隔的欄位。排除字元可能會改變整個字串的長度,而排除欄位只會影響欄位的數量。
  8. 在哪些情境下會使用排除功能?排除功能常用於過濾掉不需要的資訊,例如過濾日誌中的特定事件或過程中的臨時資料。

延伸閱讀:chmod 是什麼 ? 5分鐘學會 Linux 檔案權限設定

延伸閱讀:在 Linux 設定 crontab 排程教學與範例





主頁 » LINUX » 實用技巧 » 如何精準快速處理文字資料? 5分鐘學會 cut 指令教學與常用範例整理

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *