作者|WenasWei
将每位文件中选取的行局部复印到规范输入,若果没有文件,或则文件是-,则读取规范输出,长选项的强制参数对于短选项也是强制的。
cut是一个选定命令,通常来说,选定信息一般是针对“行”来进行分析的,并不是每篇信息分析的,用于显示每行从结尾算起num1到num2的文字。
1.1应用句型1.2应用阐述
cut命令从文件的每一行剪切字节、字符和数组并将这种字节、字符和数组写至规范输入。
倘若不指定File参数,cut命令将读取规范输出。必须指定-b、-c或-f标记之一,cut默认以制表符为分隔符。
参数:
在-b、-c或-f中只能应用一个。每位LIST由一个组成
范畴,或用冒号分隔的多个范畴。选取的输出被写入
程序与读取和写入的程序雷同。
1.3三个办法定位
cut命令次要是承受三个定位办法:
二cut帮忙文档
执行命令查问帮忙文档:
cut --help
cut帮忙文档解析:
(1)’-b字节列表’
‘–bytes=字节列表’
取舍仅复印字节列表中列举的地位中的字节。制表符和退格键与其余任何字符一样;她们占用了1个字节。倘若指定了输入定界符,而后在所选字节范畴之间输入该字符串。
(2)’-c字符列表’
‘–characters=字符列表’
取舍仅复印在character-list中列举的地位中的字符。目前与-b雷同,但是国际化将扭转此类情况。制表符和退格键与其余任何字符一样;她们占1个字符。倘若指定了输入定界符,而后在所选字节范畴之间输入该字符串。
(3)’-dinput_delim_byte’
‘–delimiter=input_delim_byte’
和-F,请应用input_delim_byte的第一个字节作为输出数组分隔符(默认为TAB)。
(4)’-f数组列表’
‘–fields=数组列表’
取舍仅复印在field-list中列举的数组。默认状况下,数组之间用TAB字符分隔。还要复印任何不蕴涵定界符的行,除非-仅定界(-s)选项已指定。
(5)’-n’
不要分拆多字节字符。
(6)’-s’
‘-仅定界’
为了-F,切勿复印不蕴涵数组分隔符的行。一般,任何没有数组分隔符的行都按原貌复印。
三命令解读与应用案例3.1实例一:查问命令联合cut-b
当你执行who命令时linux剪切命令,会输入相像如下的内容:
$ who
root pts/1 2021-04-25 21:51 (58.62.93.183)
root pts/0 2021-04-25 21:50 (58.62.93.183)
(1)提取每一行的第3个字节
$ who|cut -b 3
o
o
(2)提取第1,第2、第3个字节
计划1:
$ who |cut -b 1-3
roo
roo
roo
计划2:
$ who |cut -b 1,2,3
roo
roo
roo
-b反对形如1-3的写法linux剪切命令,并且多个定位之间用冒号隔开就才能了。
小心:
cut命令假如应用了-b选项,这么执行此命令时linux模拟,cut会先把-b后面所有的定位进行从小到大排序,而后再提取。不能颠倒定位的程序。
(3)提取第1到第3,第5和第20个字符以后的所有数据
who|cut -b 1-3,20-
roo 2021-04-25 21:51 (58.62.93.183)
roo 2021-04-25 21:50 (58.62.93.183)
roo 2021-04-25 23:05 (58.62.93.183)
(4)提取第n个字节前后所有的字节
n=2的状况下
计划1:
$ who |cut -b 2-
oot pts/1 2021-04-25 21:51 (58.62.93.183)
oot pts/0 2021-04-25 21:50 (58.62.93.183)
oot pts/2 2021-04-25 23:05 (58.62.93.183)
计划2:
$ who |cut -b -2
ro
ro
ro
3.2实例二:文本文件联合cut-c(1)成立测试文件(2)-c和-b的应用区别
-c与命令查问后果:
who|cut -c 1-3,20-
roo 2021-04-25 21:51 (58.62.93.183)
roo 2021-04-25 21:50 (58.62.93.183)
roo 2021-04-25 23:05 (58.62.93.183)
看似查问后果雷同,只是由于这个事例who输入取的数据都是字节字符,所以用-b和-c没有区别,假如你提取英文,区别就看进去了,瞧瞧英文提取的状况:
$ cut -b 3-10 test.txt
ple= 苹
eate= 创
lect= 删
e= 程序
od= 好
$ cut -c 3-10 test.txt
ple= 苹
eate= 创
lect= 删
e= 程序
od= 好
3.3实例三:cut-d与-f的奇特应用
cut的-d选项的默认距离符就是制表符,所以当你就是要应用制表符的时侯,齐全就能否省略-d选项深度linux,而间接用-f来取域就才能了。
(1)联合查问命令取出指定符号的切割的第一域
$ head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
$ head -n 5 /etc/passwd |cut -d ':' -f 1
root
daemon
bin
sys
sync
(2)取出文档手指定符号的切割的第一域
$ head -n 5 test.txt |cut -d : -f 1
apple= 苹果 =pingguo
create= 创立
delect= 删除
exe= 程序
good= 好的

$ head -n 5 test.txt |cut -d = -f 2
苹果
创立
删除
程序
好的
(3)如上-b中的拼接规定同理应用
$ head -n 5 test.txt |cut -d = -f2-
$ head -n 5 test.txt |cut -d = -f2,3
$ head -n 5 test.txt |cut -d = -f2-3
(4)分隔符必须为单个字符,多个异样如下
$ cat test.txt |cut -d '==' -f2-3
cut: the delimiter must be a single character
四应用场景和缺点有余4.1cut的应用场景4.2cut的缺点和有余4.3cut和awk的差别参考文档: