linux cut 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
cut:以某种方式按照文件的行进行分割
 
参数列表:
 -b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志
 -c    按字符选取
 -d 自定义分隔符,默认为制表符。
 -f 与-d一起使用,指定显示哪个区域。
                            that contains no delimiter character, unless
                            the -s option is specified
      --complement              补全选中的字节、字符或域
 -s, --only-delimited          不打印没有包含分界符的行
      --output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入
                                的分界符
范围控制:
    n:只有第n项
    n-:从第n项一直到行尾
    n-m:从第n项到第m项(包括m)
    -m:从一行的开始到第m项(包括m)
    -:从一行的开始到结束的所有项
 
cat /etc/passwd cut -b1-3 #取每行的第1-3字字节
 
cat /etc/passwd cut -b1-3,5-7,8 #取每行的第1-3,5-7,8的字节(后面的数字会先进行从小到大的排列) 需要事先知道具体字节,很容易出错
 
cat song.txt |cut -nb 1,2,3#当 -b 添加 -n 后则不会分割多字节 (我的系统是utf-8,所以需要用三个字节来表示一个汉字)
 
cat /etc/passwd cut -c1,3 #适用于中文 
 
cat /etc/passwd cut -d : -f 3 #以:分割,取第三段
cat /etc/passwd cut -d '' #以空格进行分割,且是一个空格
 
缺点: 有的时候分隔符很难确定