Linux cut命令

Posted StubbornAnt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux cut命令相关的知识,希望对你有一定的参考价值。

用途

文本文件按列提取。

特点

过于简单,只能处理固定格式的分隔符,分隔符不能使用正则表达式

用法

命令基本格式

  • -b、-c、-f分别表示字节、字符、字段(即byte、character、field);
  • list表示-b、-c、-f操作范围,-n常常表示具体数字;
  • file表示的自然是要操作的文本文件的名称;
  • delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
  • -s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
cut option list file
cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-d delim][-s][file ...]

list 范围的表示方法

表示意义
N只有第N项
N-从第N项一直到行尾
N-M从第N项到第M项(包括M)
-M从一行的开始到第M项(包括M)
-从一行的开始到结束的所有项

实例

经典应用

Linux中提取所有用户
cut -f 1 -d ':' /etc/passwd
以:作为分割符,提取第一个字段

去掉开始的命令提示符

cut -c 8- usercount.pig
从第8个字符开始提取
原文件 usercount.pig

grunt> A = load '/data/20160518/1055/100/9_1463541300000/part-00000' using PigStorage('|');
grunt> B = foreach A generate $16 as ip;
grunt> C = group B by ip;
grunt> D = foreach C generate group,COUNT(B);
grunt> dump D;

处理后结果

A = load '/data/20160518/1055/100/9_1463541300000/part-00000' using PigStorage('|');
B = foreach A generate $16 as ip;
C = group B by ip;
D = foreach C generate group,COUNT(B);

去除标题,并替换分隔符

cut -f 1- -s --output-delimiter='|' table.txt

  • 由于默认分割符是 \\t, 所以不需指定
  • -s 去除不含分隔符的行(通常是标题,空行)
  • 指定输出分割符
    原文件,cat table.txt
table

1       xiaohu
2       xiaoli
3       xiaowang
4       xiaoming

处理结果

1|xiaohu
2|xiaoli
3|xiaowang
4|xiaoming

以上是关于Linux cut命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux文本编辑命令

Linux cut命令

linux--cut命令

Linux命令之cut命令

linux文本处理命令--cut

Linux常用命令——cut