Linux提供了cut命令,可以通过命令行或bash来剪切文件的指定部分。cut命令对提供的文件进行操作,并将结果打印到标准输出中。剪切操作可以用字节、字符和字段等不同的说明符来完成。
cut命令语法
linux cut命令具有以下语法,与大多数linux命令相同。
cut OPTION FILE
- 选项是我们可以指定切割范围的选项部分。这是必需的。
- 文件是我们要剪切的文件。这是必需的。
cut命令将新剪切的内容打印到标准输出中。如果要保存新剪切的内容,可以将输出重定向到文件中。
cut命令帮助
有关cut命令的帮助信息和选项可以使用 手册页 像下面这样的剪切命令。
man cut
如果没有安装人员或使用 –帮助 选项,打印简短的选项和描述。
cut --help
Usage: cut OPTION… [FILE]… Print selected parts of lines from each FILE to standard output. With no FILE, or when FILE is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -b, --bytes=LIST select only these bytes -c, --characters=LIST select only these characters -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter -f, --fields=LIST select only these fields; also print any line that contains no delimiter character, unless the -s option is specified -n (ignored) --complement complement the set of selected bytes, characters or fields -s, --only-delimited do not print lines not containing delimiters --output-delimiter=STRING use STRING as the output delimiter the default is to use the input delimiter -z, --zero-terminated line delimiter is NUL, not newline --help display this help and exit --version output version information and exit Use one, and only one of -b, -c or -f. Each LIST is made up of one range, or many ranges separated by commas. Selected input is written in the same order that it is read, and is written exactly once. Each range is one of: N N'th byte, character or field, counted from 1 N- from N'th byte, character or field, to end of line N-M from N'th to M'th (included) byte, character or field -M from first to M'th (included) byte, character or field
示例文本文件
在cut命令示例中,我们将使用以下文本文件。这个文本文件包含国家名称和一些关于这个国家的城市。
USA Newyork FloridaUK London NewcastleTurkey Istanbul Ankara
剪切指定的字符范围
“剪切”命令可用于根据字符索引进行剪切。我们可以指定要返回的字符索引或多个字符范围。在下面的示例中,我们将剪切第一个字符。
cut -c 1 cities.txt
UUT
或者,我们可以通过提供每个字符值索引号来指定多个字符。索引号用逗号分隔。在下面的示例中,我们将剪切并返回cities.txt文件的前3个字符,其中包含1、2、3字节的说明符。
cut -c 1,2,3 cities.txt
USAUK Tur
另一种剪切指定字节的方法是使用字符范围。破折号用于指定要剪切和返回的字符的起始索引和结束索引。在下面的示例中,我们将使用1-3参数从1到3剪切并返回字符。
cut -c 1-3 cities.txt
USAUK Tur
可以用逗号分隔多个字符范围。在下面的示例中,我们将剪切1-3和6-9字符范围。
cut -c 1-3,6-9 cities.txt
USAewyo UK ndon Tury Is
我们可以指定从字符的开始到行的结束。在下面的示例中,我们将从字符索引3剪切到行尾。
cut -c 3- cities.txt
A Newyork Florida London Newcastlerkey Istanbul Ankara
与上一个示例相反,我们可以从行首剪切到指定的字符范围。在下面的例子中,我们将从行乞返回到第5个字符。
cut -c -5 cities.txt
USA NUK LoTurke
剪切指定的字节范围
cut命令可用于按字节模式进行剪切。我们可以指定要从指定文件中剪切的字节范围,并将结果打印到标准输出中。字节可以用-b选项指定,如下所示。我们还将提供索引从1开始的字节索引号。在下面的示例中,我们将剪切并返回每行的第一个字符。
cut -b 1 cities.txt
UUT
或者,我们可以通过提供每个字节值的索引号来指定多个字节。索引号用逗号分隔。在下面的示例中,我们将剪切cities.txt文件中的前3个字节,并使用1、2、3字节说明符返回。
cut -b 1,2,3 cities.txt
USAUK Tur
另一种剪切指定字节的方法是使用字节范围。破折号用于指定要剪切和返回的字节的开始索引和结束索引。在下面的示例中,我们将使用1-3参数从1到3剪切并返回字节。
cut -b 1-3 cities.txt
USAUK Tur
多字节范围可以通过用逗号分隔来指定。在下面的示例中,我们将剪切1-3和6-9字节的范围。
cut -b 1-3,6-9 cities.txt
USAewyo UK ndon Tury Is
我们可以指定从字节开始到行尾的长度。在下面的示例中,我们将从字节索引3剪切到行的末尾。
cut -b 3- cities.txt
A Newyork Florida London Newcastlerkey Istanbul Ankara
与上一个示例相反,我们可以从行的开头剪切到指定的字节范围。在下面的示例中,我们将从行乞返回到第5字节。
cut -b -5 cities.txt
USA NUK LoTurke
剪切指定的列/字段
cut命令可用于根据字段或列进行剪切。指定分隔符以分割每一行,并返回所提供的列或字段号。分隔符是用-d选项指定的。字段号由 -f级 选项。在下面的示例中,我们将使用单个空格作为分隔符并返回第一列或第一个字段。
cut -f 1 -d " " cities.txt
USAUKTurkey
我们也可以使用不同的分隔符,比如可以是单个字符或多个字符的常规字符。此外,流行的CSV文件格式使用逗号作为分隔符,我们可以设置逗号作为分隔符来剪切特定的列或字段。在下面的示例中,我们将使用逗号作为分隔符。
cut -f 2 -d "," cities.txt
指定输出分隔符
可以为cut命令指定输出分隔符。切割部分可以由多个字段或列组成。由于可以在输出中选择多个字段或列,因此可以使用指定的分隔符。在下面的示例中,我们将从1到3中选择多个列并使用;作为分隔符。
cut -f 1-3 -d " " --output-delimiter ";" cities.txt
USA;Newyork;FloridaUK;London;NewcastleTurkey;Istanbul;Ankara
从输出中,我们可以看到空格随。
相关文章: 如何在Vim/Vi中上下翻页?
将输出保存到文件中
默认情况下,剪切命令输出打印到标准输出中。如果需要将结果放入文件中,可以使用bash的重定向操作符将cut命令的输出重定向到文件中。在下面的示例中,我们将cut命令输出重定向到名为newcities.txt的文件中。
cut -f 2 -d " " cities.txt > newcities.txt
cut命令版本
即使它不是一个不定期更新的流行命令,我们也可能需要使用–version选项获得剪切命令版本,如下所示。
cut --version
cut (GNU coreutils) 8.32 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later https://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David M. Ihnat, David MacKenzie, and Jim Meyering.
我们可以看到cut命令的当前版本是3.82。