我们知道可以通过工具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