有時我們經常會遇到這樣一些問題:有一頁電話號碼薄,上面按順序規則地寫著人名、家庭住址、電話、備注等,此時我們只想取出所有人的名字和其對應的電話號碼,你有幾種方法可以實現呢?
確實這種縱向定位的方式用常規辦法難以實現,這時,cut就可以大顯身手了。
What’s cut?
子曰:cut命令可以從一個文本文件或者文本流中提取文本列。
命令用法:
cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-d delim][-s][file ...]
參數:
-b, --bytes=LIST
輸出 這些 字節
-c, --characters=LIST
輸出 這些 字符
-d, --delimiter=DELIM
使用 DELIM 取代 TAB 做 字段(field) 分隔符
-f, --fields=LIST
輸出 這些 字段
-n
(忽略)
-s, --only-delimited
不顯示 沒有 分隔符 的 行
--output-delimiter=STRING
使用 STRING 作為 輸出分隔符, 缺省 (的 輸出分隔符) 為 輸入分隔符
--help
顯示 幫助信息, 然後 結束
--version
顯示 版本信息, 然後 結束
使用 且 只使用 -b, -c 或 -f 中的 一個 選項. LIST 由 一個 范圍 (range) 或 逗號 隔開的 多個 范圍 組成. 范圍 是 下列 形式 之一:
N
第 N 個 字節, 字符 或 字段, 從 1 計數 起
N-
從 第 N 個 字節, 字符 或 字段 直至 行尾
N-M
從 第 N 到 第 M (並包括 第M) 個 字節, 字符 或 字段
-M
從 第 1 到 第 M (並包括 第M) 個 字節, 字符 或 字段
如果 沒有 指定 文件 FILE, 或 FILE 是 -, 就從 標准輸入 讀取 數據.
示例:
代碼如下:
[root@localhost ~]# cat /etc/passwd | cut -b 1 |head -5 #輸出文件的第一個字節
r
b
d
a
l
代碼如下:
[root@localhost ~]# cat /etc/passwd | cut -c 1-4 |head -5 #輸出文件的前四個字符
root
bin:
daem
adm:
lp:x
代碼如下:
[root@localhost ~]# cat /etc/passwd | cut -f1 -d ':' |head -5 #以:分割文件,輸出第一個字段
root
bin
daemon
adm
lp
代碼如下:
# cat a.txt
ssss affff dddd fe fsc
rrr f adfa eer ddd
代碼如下:
# cat a.txt |cut -f1,3 -d $'\t' #1,3列
ssss dddd
rrr adfa