linux命令---cut
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
概述
在每个文件FILE的各行中, 把提取的片断显示在标准输出。用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容。
本文基于:cut (GNU coreutils) 8.4
语法
cut OPTION... [FILE]...
选项
OptionsOptionsOptionsOptions | 详细说明 |
---|---|
-b, - -bytes=LIST | 以字节为单位进行分割,输出指定的字节。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志 |
-c, - -characters=LIST | 以字符为单位进行分割,输出指定的字符 |
-d, - -delimiter=DELIM | 自定义分隔符,默认为制表符。即使用 DELIM 取代TAB做字段(field)分隔符,该参数只在配合-f使用 |
-f, - -fields=LIST | 输出指定的字段,与-d一起使用,指定显示哪个区域 |
-n | 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除 |
–complement | 补足被选择的字节、字符或字段 |
-s, - -only-delimited | 不显示没有分隔符的行 |
- -output-delimiter=STRING | 使用STRING作为输出分隔符, 缺省(的输出分隔符) 为输入分隔符 |
- -help | 显示 帮助信息, 然后 结束 |
- -version | 显示 版本信息, 然后 结束 |
使用且只使用 -b, -c 或 -f 中的 一个选项. LIST由 一个 范围 (range) 或 逗号隔开的多个范围组成. 范围是下列 形式 之一:
形式 | 描述 |
---|---|
N | 第N 个字节, 字符或字段, 从1计数 起 |
N- | 从 第N 个字节, 字符或字段直至行尾 |
N-M | 从 第N到第M (并包括 第M) 个字节, 字符或字段 |
-M | 从第1到第M (并包括 第M) 个字节, 字符或字段 |
如果没有指定文件 FILE, 或FILE是-, 就从标准输读取数据.
实例
写在开始之前的话:
1、一个空格算一个字节,一个汉字算三个字节
2、cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。不能颠倒定位的顺序!
已存在文件testCut.txt
[root@wmstianjin16172 ~]# vim testCut.txt
这是测试多字节字符的的行,针对-n设计的用例
-rw-r--r-- 1 root root 57344 Jul 19 17:09 a
-rw-------. 1 root root 2132 May 11 02:35 anaconda-ks.cfg
-rw-r--r-- 1 root root 9147719 May 22 15:06 filebeat-5.3.0-x86_64.rpm
-rw-r--r-- 1 root root 17142 May 16 20:21 initialization.log
-rw-r--r--. 1 root root 32415 May 11 02:35 install.log
-rw-r--r--. 1 root root 6996 May 11 02:34 install.log.syslog
drwxr-xr-x 3 root root 4096 Jun 27 10:54 perfmon
drwxr-xr-x 2 root root 4096 May 16 20:21 repo
drwxr-xr-x 3 root root 4096 May 16 20:19 searchsoft
drwxr-xr-x 17 root root 4096 May 16 20:18 soft
-rw-r--r-- 1 root root 80009 Oct 26 2012 ssh.tar.gz
-rw-r--r-- 1 root root 937 Jul 20 10:46 test.csv
drwxr-xr-x 3 root root 4096 May 16 20:21 tools
-rw-r--r--. 1 root root 14622355 May 5 2016 zabbix_agent_DDapp-2.2.3-1.x86_64.rpm
1、按字节选取前10个字节
[root@wmstianjin16172 ~]#cut -b1-10 testCut.txt
[root@wmstianjin16172 ~]#cut -b1,2,3,4,5,6,7,8,9,10 testCut.txt
[root@wmstianjin16172 ~]#cut --bytes=1,2,3,4,5,6,7,8,9,10 testCut.txt
[root@wmstianjin16172 ~]#cut --bytes=1-10 testCut.txt
2、按字符选取前10个字符
[root@wmstianjin16172 ~]#cut -c1-10 testCut.txt
[root@wmstianjin16172 ~]#cut -c1,2,3,4,5,6,7,8,9,10 testCut.txt
[root@wmstianjin16172 ~]#cut --characters=1,2,3,4,5,6,7,8,9,10 testCut.txt
[root@wmstianjin16172 ~]#cut --characters=1-10 testCut.txt
3、使用字段域选取(结合-d自定义分隔符)
-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则无法流畅的处理。但字段域能够很好的处理,不固定长度,使用固定分割。
[root@wmstianjin16172 ~]# cut -f1-2 testCut.txt
[root@wmstianjin16172 ~]# cut -f1-2 testCut.txt
[root@wmstianjin16172 ~]# cut -dx -f1-2 testCut.txt
[root@wmstianjin16172 ~]# cut -dx -f1,2 testCut.txt
4、当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开
[root@wmstianjin16172 ~]#cut -nb1-2 testCut.txt
[root@wmstianjin16172 ~]#cut -nb1-3 testCut.txt
具体解释见-n参数说明。一个汉字为3个字节所以第一条命令没有输出第一行的”这”字,因为使用-n不可拆分
5、–complement 选项提取指定字段之外的列(不打印除某字段域—由f指定)
cut -dx -f1 --complement testCut.txt
6、不显示没有分隔符的行
[root@wmstianjin16172 ~]#cut -dZ -s testCut.txt
[root@wmstianjin16172 ~]#cut -dZ --only-delimited testCut.txt
7、指定输出的分隔符
[root@wmstianjin16172 ~]#cut -dx --output-delimiter="Q" testCut.txt
原文链接
欢迎拍砖,未完待续……
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献15条内容
所有评论(0)