Linux man cut
cut - 将每个输入文件(如果没有指定输入文件或者指定的输入文件名为 - 时,从 stdin 读取)的每一行的选中部分写入到 stdout。
版本
$ cut --version
cut (GNU coreutils) 8.22语法
cut OPTION... [FILE]...描述
从每个 FILE 的每一行中,打印被选中的部分。
OPTIONS
-b, --bytes=LIST
只选择 LIST 中规定范围的字节。
关于 LIST 详见下文。
-c, --characters=LIST
只选择 LIST 中规定范围的字符。
关于 LIST 详见下文。
-d, --delimiter=DELIM
将 DELIM 字符作为字段分隔符(默认分隔符:TAB 字符)。
此选项只能与 -f 选项一起使用。
-f, --fields=LIST
只选择 LIST 中规定范围的字段。同时,在默认情况下,字段使用 TAB 字符分隔。
同时,除非同时使用 -s 选项,否则还要打印任何不包含分隔符的行。
-n
使用 -b 选项时,不拆分多字节的字符。
--complement
同时打印所选字节、字符、字段的补码。
-s, --only-delimited
只打印有包含字段分隔符的行。
--output-delimiter=STRING
使用 STRING 作为输出的字段分隔符(默认情况下,使用 -d 选项所指定的分隔符)。
此选项只能与 -f 选项一起使用。
--help
显示帮助信息。
--version
显示版本信息。
-b、-c、-f 选项是必选的,同时也是单选的。LIST 格式
LIST 由一个或者多个英文逗号分隔的 RANGE 组成。其中,RANGE 值格式如下:
N:第 N 个字节(或字符、字段),N 从 1 开始。
N-:从第 N 个字节(或字符、字段)开始,到行尾。
N-M:从第 N 个字节(或字符、字段)到(包含)第 M 个字节。
-M:从第 1 个字节(或字符、字段)到(包含)第 M 个字节。示例
# 不分隔多字节字符,打印前两个字节
cut -n -b -2 demo
# 打印前两个字符
cut -c -2 demo
# 以空格作为输入分隔符,不输出无空格的行,打印前两个字段
cut -d \ -s -f -2 demo
# 以空格作为输入分隔符,以 + 作为输出分隔符,打印前两个字段
cut -d \ --output-delimiter=+ -f -2 demo
# 打印第 2 到 3 范围的字符,打印第 5 到 6 范围的字符,补全 6 以后的字符串
cut -c 2-3,5-6 --complement demo