在Linux中剪切命令

Linux和Unix系统中有许多实用程序,可让您处理和过滤文本文件。 cut 是一个命令行实用程序,使您可以从指定的文件或管道数据中剪切部分行,并将结果打印到标准输出中。 它可用于通过定界符,字节位置和字符来剪切行的一部分。

在本教程中,我们将向您展示如何使用 cut 通过实际示例和最常见选项的详细说明进行命令。

如何使用 cut 命令#

的语法 cut 命令如下:

cut OPTION... [FILE]...

告诉你的选择 cut 在剪切选定部分时是否使用定界符,字节位置或字符,这些行如下:

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

您可以使用上面列出的选项之一,并且只能使用其中之一。

其他选项是:

  • -d--delimiter)-指定将使用的定界符,而不是默认的“ TAB”定界符。
  • --complement -补充选择。 使用此选项时 cut 显示除所选内容外的所有字节,字符或字段。
  • -s--only-delimited) – 默认 cut 打印不包含定界符的行。 使用此选项时, cut 不打印不包含定界符的行。
  • --output-delimiter -的默认行为 cut 将输入定界符用作输出定界符。 此选项使您可以指定其他输出定界符字符串。

cut 命令可以接受零个或多个输入文件名。 如果不 FILE 指定,或何时 FILE-cut 将从标准输入中读取。

LIST 参数传递给 -f-b-c options可以是整数,多个逗号分隔的整数,一个整数范围或多个逗号分隔的整数范围。 每个范围可以是以下之一:

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

如何按领域切割

要指定应剪切的字段,请使用 -f 选项。 未指定时,默认定界符为“ 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 选项。

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

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个字符,每个字符用一个字节表示。 当计算机开始在全球范围内可用时,科技公司开始为不同的语言引入新的字符编码。 对于具有超过256个字符的语言,不可能实现简单的1对1映射。 这导致了诸如共享文档或浏览网站之类的不同问题,因此需要一种能够处理世界上大多数书写系统的新Unicode标准。 创建UTF-8就是为了解决这些问题。 在UTF-8中,并非所有字符都用1个字节表示。 字符可以用1到4字节表示。

-b--bytes)选项告诉命令从给定字节位置指定的每一行中剪切节。

在以下示例中,我们正在使用 ü 占用2个字节的字符。

选择第五个字节:

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

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

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

选择1到5字节的范围:

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

在撰写本文时, cut 捆绑在GNU coreutils中的选项没有按字符分割的选项。 使用时 -c 选项, cut 的行为与使用 -b 选项。

剪切示例

cut 命令通常通过管道与其他命令结合使用。 这里有一些例子:

获取所有用户的列表

输出 getent passwd 命令传递给 cut,它使用打印第一字段 : 作为分隔符。

getent passwd | cut -d ':' -f1

输出显示所有系统用户的列表。

查看10个最常用的命令

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

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

结论#

cut 命令用于显示从给定文件或标准输入的每一行中选择的字段。

虽然非常有用, cut 有一些限制。 它不支持指定多个字符作为分隔符,也不支持多个分隔符。

如果您有任何疑问或反馈,请随时发表评论。

切断端子

Sidebar