Unix 基本指令: Cut

突然發現 cut 的好用, 來做 Linux (Unix) 基本指令介紹, 也當做筆記來用~~

cut 有三個參數:

  • -c list: 一段範圍清單, 以','隔開, 直列切割(ex: 1,3,5-10,33)
  • -d delim: 可以設中間間隔符號要哪種, 預設是tab分隔切割, 通常會搭配 -f(決定要取切割欄位的哪欄)
  • -f list: 以欄位為主, 作剪下的動作, list 是欄位編號或一段範圍的清單(類同 -c 參數)

cut 使用範例:

-d, -f: 拉 passwd 檔 第1欄和第5欄(用 : 分隔)

$ cut -d : -f 1,5 /etc/passwd
root:root
sys:sys
abc:ABC Lee
...

-d, -f: 一樣拉 passwd 檔, 用 : 分隔, 只拉第 6 欄

$ cut -d : -f 6 /etc/passwd
/root
/dev
...

-d, -f:  一樣拉 passwd 檔, 用 : 分隔, 拉第 1~3欄

$ cut -d: -f1-3 /etc/passwd
root:x:0
daemon:x:1
...

-c: 直的剪下來, 直的剪 1-10個字(很常用, 就是為了這個指令寫這篇.. XD)

$ ls -l | cut -c 1-10
total 201
drwxr-xr-x
drwxr-xr-x
-rw-r--r--
-rw-r--r--

awk 的作法:

$ awk -F: ' { print $1, $5 }' /etc/passwd
$ awk -F: -v 'OFS=:' '{ print $1, $5}' /etc/passwd (-v 是設 OFS變數, OFS=中間間隔要用何種符號秀出來)
$ awk -F: '{ print $1":"$5}' /etc/passwd
$ ls -l | awk '{ print $1 }'
$ ls -l | awk '{ print $1, $3}'

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Unix 基本指令: Cut〉中有 4 則留言

  1. 我都這樣在 sh script 裡,抓 SVN 的 rev/date 資料:
    __revision=`echo '$Rev: 112 $' | cut -d' ' -f2`;
    __rev_date=`echo '$Date: 2006-11-27 16:26:10 +0800 (Tue, 27 11 2006) $' | cut -d' ' -f2`;

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料