描述
将每行进行切分成多节,并返回一个或多个节(section).
cut命令浏览每行输入, 将每行分成节, 然后显示那些在命令行上指定的节. 如果命令行上没有列出文件, 则使用STDIN
语法
cut {section_specifiers} [options] [file…]
参数说明
节描述符 | 说明 |
---|---|
-bLIST 或 -bytes LIST | 显示由参数LIST指定位置上的字节. 例如, -b1-3 只显示每一行的前三个字节. |
-cLIST 或 -characters | 显示由参数LIST指定位置上的字符. 例如, -c1-3 只显示每一行的前三个字符. |
-fLIST 或 -fields LIST | 显示有LIST指定的字段. 一个字段由行起始\ 行结束和由-d/–delimiter指定的分界符(DELIMITER)界定. 默认的分解符是制表符. 从1开始 |
LIST参数
*使用逗号表示单个不连续的小节,如选出4和7小节,用-f4,7
*使用-表示连续的小节,如选择2\3\4小节,用-b2-4
*使用n-表示选择从n小节开始到行结束的所有小节
cut命令选项 | 说明 |
---|---|
-dDELIMITER或–delimiter DELIMITER | 指定被描述符-f/–fields使用的分界符, 默认的分界符是制表符 |
-s 或 --only-delimited | 用于和描述符-f/–fields的连接, 从而删除不包含字段分界符字符的行 |
实例
cut.bat文件(中间是多个空格)
Robert Male Husband
barbara Female Wife
Peter Male Son
Richard Male Son
按空格切,取第一个
lixn@lixn-K55VD:~$ cut -d" " -f 1 cut.dat
Robert
barbara
Peter
Richard
取[9-14]位, 从1开始
lixn@lixn-K55VD:~$ cut -b9-14 cut.dat
Male
Female
Male
Male
去重
lixn@lixn-K55VD:~$ cut -b9-14 cut.dat | sort | uniq
Female
Male
每个空格作为一个
lixn@lixn-K55VD:~$ cut --delimiter " " -f 2 cut.dat
Female
Male
使用tr去优化多个空格视为一个的问题(失败)
lixn@lixn-K55VD:~$ cat cut.dat | tr "" --squeeze-repeats | cut --delimiter " " --fields 2
Female
Male
扫接口日志,获得视频播放排行,前100
zcat /data1/log/cv/access_wx_api.log.20181116_* | grep '/video/play/' | cut -f3 | cut -f1 -d"," | cut -f7 -d"/" | sort | uniq -c | sort -n -r | head -n 100