跳轉到內容

Cut

100% developed
來自華夏公益教科書,開放的書籍,開放的世界

Cut 是一種在許多平臺上可用的 Unix 命令列工具,用於從輸入行中提取欄位等。

Cut 的命令列選項又稱開關

  • -clist: 顯示行的選定字元。
  • -flist: 顯示行的選定欄位,預設情況下以製表符分隔。
  • -dchar: 將欄位分隔符從製表符切換到 char
  • -s: 不顯示(“抑制”)不包含欄位分隔符的行。

某些版本的 cut 的命令列選項又稱開關

  • -b: 顯示行的選定位元組。
  • -n: 不分割多位元組字元。

Cut 使用示例

  • cut -f1 file.txt
    • 顯示每行的第一個欄位,使用製表符作為欄位分隔符。
  • echo a:b | cut -d: -f2
    • 顯示每行的第二個欄位,使用冒號作為欄位分隔符。
  • echo a b c | cut -d" " -f1,3
  • echo a b c d e | cut -d" " -f1-3,5
  • echo a b c | cut -d" " -f3,2,1
    • 輸出 "a b c",忽略 -f 之後反轉的順序。
  • echo a b c d | cut -d" " -f2-
    • 輸出第二個和所有後續欄位,即 "b c d"。
  • echo abcd | cut -c3,4
    • 不按欄位處理,而是按字元處理。因此,輸出 "cd"。
  • echo abcdefgh | cut -c1-3,6-8
    • 輸出 abcfgh

Cut 領域中類似工具的使用示例

  • echo a  b|awk '{print $2}'
    • 顯示 "b",以任意數量的製表符或空格分隔欄位。因此,對於 awk,"b" 是第二個欄位,而對於 cut -d" ","b" 是第三個欄位。
  • echo a  b|awk '{print $2 $1}'
    • 顯示 "ba",保留欄位指定的順序。
  • echo a  b|sed "s/  */ /g" |cut -f2 -d" "
    • 顯示 "b"。使用 sed 將空格序列首先壓縮成單個空格。

侷限性

[編輯 | 編輯原始碼]

Cut 受以下限制

  • 無法指定“一個或多個空格”或類似的欄位分隔符。
  • 無法更改輸出中欄位的順序。

注意:有些人發現 awk 或 gawk 能夠滿足 cut 限制過於嚴格的需求。

GNU cut for MS Windows 的版本可從 GnuWin32 專案 以及 Cygwin 獲取。

[編輯 | 編輯原始碼]
華夏公益教科書