首页 > Linux Shell > Linux cut命令

Linux cut命令

2014年12月22日 发表评论 阅读评论

cut命令可以抽取某个文件每一行的特定列信息,类似UE里的列模式

主要选项:

-b 以字节为单位

-c 以字符为单位

-f 默认以TAB为分割符,将行分割成域,以域为单位,可以通过指定参数-d来自定义分隔符,如果该行没有符合的分隔符则打印该整行。

具体要选择哪些列信息,有四种基本的格式:

N:N个单位

N-:N个单位到最后一个单位

N-M:N个单位到第M个单位

-M:从第一个单位到第M个单位

这四种基本形式也可以进行组合(以逗号分隔),例如

1,2,4:代表要截取第1个,第2个和第4个单位

1,2-4:代表要截取第一个和24个单位

举例:

样例文件:

[root@demo test]# cat employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

1:截取前三个字节

[root@demo test]# cut -b1-3 employee.txt
101
102
103
104
105

2:该文件每行以逗号分隔,可以提取员工的ID和职位

[root@demo test]# cut -d"," -f1,3 employee.txt
101,CEO
102,IT Manager
103,Sysadmin
104,Developer
105,Sales Manager

如果输出不想使用逗号作为分隔符使用使用—output参数,自定义输出分隔符

3:以冒号作为输出的分隔符

[root@demo test]# cut -d "," -f1,3 --output ":" employee.txt
101:CEO
102:IT Manager
103:Sysadmin
104:Developer
105:Sales Manager

前面说过如果某一个行没有指定的分隔符会打印整行,如果你不想显示该行可以使用-s参数

首先在样例文件的最后追加一行:

abc

重新执行例3的命令:

[root@demo test]# cut -d "," -f1,3 --output ":" employee.txt
101:CEO
102:IT Manager
103:Sysadmin
104:Developer
105:Sales Manager
abc

发现最后一行被打印出来了

4:使用-s屏蔽没有指定分隔符的行

[root@demo test]# cut -d "," -f1,3 --output ":" -s  employee.txt
101:CEO
102:IT Manager
103:Sysadmin
104:Developer
105:Sales Manager

如果对剩下的行数据感兴趣可以使用—complement,类似于取反的操作

5:删除第2个域,保留其他的信息

[root@demo test]# cut -d "," -f2  --output ":" -s --complement  employee.txt
101:CEO
102:IT Manager
103:Sysadmin
104:Developer
105:Sales Manager

分类: Linux Shell 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.