Linux Cut命令例子

・8 分钟阅读

在Linux和Unix系统中,有许多程序允许你处理和过滤文本文件,Cut是一个命令行程序,它允许你从指定的文件或管道数据中剪切部分行,并将结果打印到标准输出。

在本教程中,通过实例向你展示如何使用Linux cut命令,并详细解释最常见的cut选项。

如何使用Cut命令

cut命令的语法如下:


cut OPTION... [FILE]...

在使用cut命令时,必须使用下列选项之一和其中之一:

  • -f ( --fields=LIST ) - 通过指定字段,或字段的范围选择,这是最常用的选项
  • -b (--bytes=LIST ) - 通过指定字节,一组字节或一组字节来选择
  • -c ( --characters=LIST ) - 通过指定字符,或一组字符选择

其他选项包括:

  • -d ( --delimiter ) - " delimiter " 指定使用的分隔符,而不是默认的分隔符
  • --complement - 补充选择,当使用此选项cut时,显示除选定的
  • -s ( --only-delimited ) - 默认剪切将打印不包含分隔符的行,使用此选项时cut将不打印不包含分隔符的行
  • --output-delimiter - 默认使用输入分隔符作为输出分隔符,此选项允许你指定不同的输出分隔符字符串

cut命令可以接受零个或多个输入文件名,如果没有指定文件,或者当FILE为-时,cut将读取标准输入。

传递给-f-b-c选项的列表参数可以是一个整数,多个整数之间用逗号分隔,多个范围隔开,每个范围可以是下列值之一:

  • N第N个字段,字节或字符,从1开始。
  • N-从第n个字段,字节或字符到行尾
  • N-M从第n个字段到第m个字段,字节或字符
  • -M从第一个到Mth字段,字节或字符

如何按字段剪切

Cut命令主要用于显示每行文件或标准输入中的选定字段。未指定时,默认分隔符为"制表符TAB"

在下面的例子中,使用以下文件,所有字段由制表符分隔。

test.txt

245:789 4567 M:4540 Admin 01:10:1980
535:763 4987 M:3476 Sales 11:04:1978

要显示第一个和第三个字段,可以使用:

cut test.txt -f 1,3

245:789 M:4540
535:763 M:3476

或者,如果要从第一个字段显示到第四个字段:

cut test.txt -f -4

245:789 4567 M:4540 Admin
535:763 4987 M:3476 Sales

如何基于分隔符进行剪切

要根据分隔符进行剪切,请使用-d选项,后跟要使用的分隔符。

例如要使用":" 作为分隔符显示第一个和第三个字段,可以键入:

cut test.txt -d ':' -f 1,3

245:4540 Admin 01
535:3476 Sales 11

可以使用单个字符作为分隔符,在下面的示例中,使用空格字符作为分隔符并打印第二个字段:

echo"Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
 
ipsum

如何补充选择

要补充选择字段列表,请使用--complement选项,这将只打印那些没有使用-f选项选择的字段。

以下命令将打印除第一个和{rd以外的所有字段:

cut test.txt -f 1,3 --complement

4567 Admin 01:10:1980
4987 Sales 11:04:1978

如何指定输出分隔符

指定输出分隔符使用--output-delimiter选项,例如要将输出分隔符设置为_,可以使用:

cut test.txt -f 1,3 --output-delimiter='_'

245:789_M:4540
535:763_M:3476

如何按字节和字符进行剪切

在进一步讨论之前,区分字节和字符。

一个字节是8位,可以表示256个不同的值,当ASCII标准建立时,它考虑到了所有英文字母,数字和符号的使用,ASCII字符表有128个字符,每个字符用一个字节表示,创建UTF-8以解决这些问题, 但是在UTF-8中,并非所有字符都用1字节表示,字符可以表示为1字节到4字节。

在下面的示例中,使用 ü字符,它采用2字节。

使用-b ( --bytes )选项通过指定字节位置来剪切行的节,

选择第五个字节:

echo 'drüberspringen' | cut -b 5
 
b

选择第5,第9和第13个字节:

echo 'drüberspringen' | cut -b 5,9,13
 
bpg

选择范围从第一个字节到第五个字节:

echo 'drüberspringen' | cut -b 1-5
 
drüb

在撰写本文时,GNU coreutils中捆绑的cut版本没有选择剪切字符,使用-c选项cut时的行为与使用-b选项时的行为相同。

剪切示例

cut命令通常通过管道与其他命令组合使用,下面是一些示例。

获取所有用户列表

getent passwd命令的输出被传递给cut,它使用:作为分隔符打印第一个文件。

getent passwd | cut -d ':' -f1

View 10最常用的命令

在下面的示例中,cut用于从history命令输出的每一行中去除前8个字节。

history | cut -c8- | sort | uniq -c | sort -rn | head

结束语

现在你应该对如何使用Linux cut命令有很好的理解,虽然非常有用,但是cut命令有一些限制,它不支持指定多个字符作为分隔符。

讨论
Syq2803 profile image