我們知道可以通過工具grep或egrep按行篩選記錄,這里我們可以通過cut工具對文本按列進行切分,它可以指定定界符,linux下制表符是默認的定界符。
#cut -f 2,3 textfile
這個命令可以顯示textfile文件的第2、3列。
例如:有文件如下:
# cat dept
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
1)# cut -f 2,3 dept
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
2)# cut -s -f 2,3 dept
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
其中-s選項可以過濾掉沒有按照指定定界符的行。
3)# cut -s -f1 --complement dept
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
使用-f1 --complement選項輸出結果不顯示第1行。
4)# cut -s -d":" -f1,2,3,4,5,6,7 dept
root:x:0:0:root:/root:/bin/bash
spark:x:481:480:Spark:/var/lib/spark:/sbin/nologin
hue:x:480:479:Hue:/usr/lib/hue:/bin/false
對於不是按照標准定界符分隔的文件,可以使用-d參數指定定界符。
通過指定字段、字符、字節范圍進行切割:
此種方法依賴於下表中的內容:
| 參數 |
說明 |
| N- N-M -M |
從第n個字符、字節、字段開始至行尾 從第n個字符、字節、字段至第m(包含)字符、字節、字段 從第1個字符、字節、字段開始至第m個字符、字節、字段 |
| -b -c -f |
表示字節 表示字符 表示字段 |
| --output-delimiter |
指定輸出定界符 |
例如:
# cat cuttext
qwertyuiopasdfghjkl
qwertyuiopasdfghjkl
Qwertyuiopasdfghjkl
1)# cut -c1-5,6-10 cuttext --output-delimiter ","
qwert,yuiop
qwert,yuiop
qwert,yuiop
