带有实际示例的Linux Cut命令

系统 Linux
在本教程中,我们将通过一些实用示例来学习Linux cut命令,你可以在日常命令行活动中使用这些示例。

cut命令用于Linux和Unix系统中,从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

在本教程中,我们将通过一些实用示例来学习Linux cut命令,你可以在日常命令行活动中使用这些示例。

[[323116]]

Cut命令和语法

cut命令基本语法如下:

  1. cut OPTION... [FILE]... 

让我们看一下这个选项,没有哪个选项此命令不起作用。

剪切选项:

  • f:通过指定字段进行提取。cut命令使用“ TAB”作为默认字段分隔符。
  • d:'Tab'是默认的分隔符,使用此选项可以使用特定的分隔符。
  • b:通过指定一个字节来提取。也可以指定字节范围。
  • c:按字符分割。这可以是用逗号分隔的数字列表,也可以是用连字符(-)分隔的数字范围。–complement:用来补充选择
  • output-delimiter:要更改输出分隔符,请使用选项-output-delimiter ='delimiter'。
  • -only-delimited:Cut将不会输出不包含分隔符的行

在本教程中,我们将使用以下名为“ content.txt”的文本文件和/ etc / passwd文件来说明我们的示例。

  1. $ cat content.txt  
  2. Ubuntu Linux 
  3. Microsoft Windows 
  4. OsX El Capitan 
  5. Unix 
  6. FreeBSD 

如何用分隔符剪切

最常用的cut选项是-d和-f的组合,它基本上会根据特定的分隔符和列出的字段提取内容。

例如,以下仅使用分隔符(:)输出'/ etc / passwd'文件中每行的第一字段。

  1. $ cut -d':' -f1 /etc/passwd 
  2. root 
  3. bin 
  4. daemon 
  5. adm 
  6. lp 
  7. sync 
  8. shutdown 
  9. halt 
  10. mail 
  11. operator 
  12. games 
  13. ... 

在下面的示例中,我们使用空格(“”)作为分隔符,并从名为'content.txt'的文件中删除了第一个字段。

  1. $ cut -d " " -f 1 content.txt  
  2. Ubuntu 
  3. Microsoft 
  4. OsX 
  5. Unix 
  6. FreeBSD 

本示例从特定文件中提取多个字段。在这里,我们使用冒号(:)分隔符从文件“ / etc / passwd”中提取第一和第六字段,文件中包含字符串“ / bin / bash”:

  1. $ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6 
  2. root:/root 
  3. slax:/home/slax 

要显示字段范围,请指定以hypen(-)分隔的开始字段和结束字段,如下所示:

  1. $ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7 
  2. root:x:0:0:/root:/bin/bash 
  3. slax:x:1000:1000:/home/slax:/bin/bash 

如何补充输出选择

要补充选择字段列表,请使用--complement选项。此选项用于在何处选择除指定字段以外的所有字段。

在下面的示例命令中,将输出'/ etc / passwd'文件中第二个字段以外的所有字段:

  1. $ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2 
  2. root:0:0:root:/root:/bin/bash 

如何指定输出分隔符:

要指定输出分隔符,请使用--output-delimiter选项。输入分隔符由-d选项指定,默认情况下,输出分隔符与输入分隔符相同。

让我们首先看下输出不使用输出分隔符的情况,如下所示:

  1. $  cut -d: -f1,7  /etc/passwd |  sort |  uniq -u 
  2. _apt:/usr/sbin/nologin 
  3. backup:/usr/sbin/nologin 
  4. bin:/usr/sbin/nologin 
  5. daemon:/usr/sbin/nologin 
  6. dnsmasq:/usr/sbin/nologin 
  7. games:/usr/sbin/nologin 
  8. gnats:/usr/sbin/nologin 
  9. irc:/usr/sbin/nologin 
  10. landscape:/usr/sbin/nologin 
  11. list:/usr/sbin/nologin 
  12. lp:/usr/sbin/nologin 
  13. lxd:/bin/false 

现在,我添加了--output-delimiter选项,并将输入分隔符冒号(:)替换为输出分隔符“ SPACE”,如下所示:

  1. $  cut -d: -f1,7 --output-delimiter ' ' /etc/passwd |  sort |  uniq -u 
  2. _apt /usr/sbin/nologin 
  3. backup /usr/sbin/nologin 
  4. bin /usr/sbin/nologin 
  5. daemon /usr/sbin/nologin 
  6. dnsmasq /usr/sbin/nologin 
  7. games /usr/sbin/nologin 
  8. gnats /usr/sbin/nologin 
  9. irc /usr/sbin/nologin 
  10. landscape /usr/sbin/nologin 
  11. list /usr/sbin/nologin 
  12. lp /usr/sbin/nologin 
  13. lxd /bin/false 

让我们看下另一个示例,这里我们使用输出分隔符输出在新行的每个字段上。

在这里,我们将--output-delimiter用作$’\ n’,表示新行。

输出如下:

  1. $ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n' 
  2. root 
  3. /root 
  4. /bin/bash 
  5. operator 
  6. /root 
  7. /sbin/nologin 

如何按字符剪切

用于按字符位置剪切。请记住,“ TABS”和“空格”也被视为字符。

要从名为content.txt的文件的每一行输出第一个字符,请使用以下命令:

  1. $ cut -c 1 content.txt 

在下面的示例中,我们将显示文件中每行的字符1至7(范围):

  1. $ cut -c 1-7 content.txt 
  2. Ubuntu 
  3. Microso 
  4. OsX El 
  5. Unix 
  6. FreeBSD 

让我们看看如何通过特定的开始或结束位置来选择列。

要将列从第二个字符提取到最后一个字符:

  1. $ cut -c2- content.txt 
  2. buntu Linux 
  3. icrosoft Windows 
  4. sX El Capitan 
  5. nix 
  6. reeBSD 

要从第一个字符到第四个字符提取列:

  1. cut -c-4 content.txt 
  2. Ubun 
  3. Micr 
  4. OsX 
  5. Unix 
  6. Free 

如何按照字节剪切

使用-b选项通过用逗号(,)分隔的数字指定字节位置来选择一行中的一部分。使用连字符可以指定字节范围。

以下示例从名为“ content.txt”的文件的第1、2和3个字节切出:

  1. $ cut -b 1,2,3 content.txt  
  2. Ubu 
  3. Mic 
  4. OsX 
  5. Uni 
  6. Fre 

我们还可以使用以下命令列出范围:

  1. $ cut -b 1-3,5-7 content.txt  
  2. Ubutu  
  3. Micoso 
  4. OsXEl  
  5. Uni 
  6. FreBSD 

一些实用的示例

Cut是结合不同的Linux或Unix命令最实用的方法。

例如,您要使用ps命令提取“ USER”,“ PID”和“ COMMAND”如下:

  1.  ps -L u n | tr -s " " | cut -d " " -f 2,3,14- 
  2. USER PID COMMAND 
  3. 0 676 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220 
  4. 0 681 /sbin/agetty -o -p -- \u --noclear tty1 linux 
  5. 0 23174 -bash 
  6. 0 26737 ps -L u n 
  7. 0 26738 tr -s 
  8. 0 26739 cut -d -f 2,3,14- 

让我们再举一个例子来提取内存的“ total”、“ used”和“ free”值,并使用多个命令将其保存到文本文件中:

  1. $ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt 
  2. Output 
  3. $ cat memory.txt 
  4. 985 86 234 

结论

cut命令可以与许多其他Linux或Unix命令一起传递。可以通过管道传递一个或多个过滤器以进行其他文本处理。

cut命令的局限性之一是它不支持指定多个字符作为分隔符。多个空格会被计为多个字段分隔符,必须在剪切前使用tr命令才能获得所需的输出。

 

责任编辑:赵宁宁 来源: CU技术社区
相关推荐

2018-08-06 08:51:32

Linux命令cut

2020-07-20 07:45:00

Linux

2023-12-21 13:59:41

2022-08-29 08:33:22

SocatLinux命令

2022-04-28 08:05:05

数据库数据库交互

2010-06-24 14:08:25

Linux Cat命令

2013-11-15 16:07:26

Linux dfLinux命令

2022-01-17 10:05:33

LinuxWatch命令

2010-04-21 13:31:11

Oracle时间

2013-05-23 15:10:34

Netcat

2013-10-08 15:51:03

Linux find命

2020-09-29 07:18:24

Linuxtee命令

2022-05-09 08:55:58

Linuxdiff命令

2013-10-08 16:24:34

Linux find命

2018-04-16 10:12:46

Linux命令gunzip

2021-07-19 15:12:21

Python编程语言

2010-06-02 17:46:54

MySQL 查询缓存

2010-05-18 16:29:44

MySQL修改表

2010-04-12 12:30:44

Oracle 安装脚本

2020-05-20 13:45:52

Linuxtouch命令
点赞
收藏

51CTO技术栈公众号