Linux 中的剪切命令

2023-11-05

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就是使用输入分隔符作为输出分隔符。此选项允许您指定不同的输出分隔符字符串。

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

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

  • 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

或者如果你想显示从第1个到第4个字段:

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 option.

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

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

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

在进一步讨论之前,让我们先区分一下字节和字符。

1 个字节为 8 位,可以表示 256 个不同的值。当 ASCII 标准建立时,它考虑了使用英语所需的所有字母、数字和符号。 ASCII字符表有128个字符,每个字符由一个字节表示。当计算机开始在全球范围内使用时,科技公司开始为不同语言引入新的字符编码。对于超过 256 个字符的语言,简单的一对一映射是不可能的。这会导致不同的问题,例如共享文档或浏览网站,因此需要一个可以处理世界上大多数书写系统的新 Unicode 标准。 UTF-8 就是为了解决这些问题而创建的。在UTF-8中,并非所有字符都用1个字节表示。字符可以用1字节到4字节来表示。

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

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

选择第5个字节:

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 option.

剪切示例#

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

获取所有用户的列表#

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

getent passwd | cut -d ':' -f1

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

查看 10 个最常用的命令#

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

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

结论#

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的剪切命令 的相关文章

  • OSX - 始终隐藏某些文件

    我知道如何在终端中显示和隐藏隐藏文件 但是有没有办法在显示隐藏文件时隐藏某些文件 例如 DS STORE 可以这么说 使某些文件超级隐藏吗 Use chflags与隐藏选项 ie chflags hidden fileToHide从 Fin
  • 如何删除 CSV 文件的一个或多个列,该文件的单元格值带有用双引号引起来的字符串

    如何从 CSV 文件中删除具有逗号分隔值且字符串用双引号括起来且中间有逗号的列 我有一个文件 44 csv 有 4 行 包括标题 格式如下 column1 column2 column3 column 4 column5 column6 1
  • macOS 上的 Bash - 获取给定年份每个星期六的日期列表

    In bash on macOS 我想写一个小脚本dates 或任何其他可以做的程序 它给我一个格式的日期列表yyyymmdd给定年份的每个星期六并将其保存到变量中 例如 如果我想要 1850 年所有星期六的日期列表 它应该看起来像这样 v
  • 如何在最新的 VLC 版本上通过命令行设置音量?

    我一直在尝试在 Ubuntu 上通过终端设置 VLC 2 2 1 中的音量 但没有成功 参数 volume不存在了 Warning option volume no longer exists 并且我在帮助中找不到任何包含 卷 的内容 文档
  • Mac 终端 - 打开终端时出现“释放的指针未分配”错误

    在 mac 上打开终端时收到以下消息 上次登录 3 月 11 日星期二 14 33 24 在控制台上 登录 291 0x7fff78af9310 malloc 对象 0x7f974be006f0 的错误 正在释放的指针未分配 在malloc
  • 运行不带“python”关键字的 python 脚本

    如何在 Mac 上的终端中运行 python 脚本而不使用 python 关键字 而无需编辑现有的 python 文件 现在我必须这样做 python script py 我喜欢做的是这样的 script py 添加一个shebang us
  • VS Code 刷新集成终端环境变量,无需重新启动/注销

    如果您在 Windows 上添加 更改某些环境变量 例如 PATH 即使重新启动 VS Code 后 它也不会在 VS Code 集成终端中可用 但是 如果您从 Windows 命令提示符 Powershell 打开该终端 它将具有这些新的
  • 我安装了 nvm n,现在我不断收到“dyld:错误的外部重定位长度”

    我使用 sudo 安装了 nvm n 并决定通过在我的系统上下载多个版本的节点来测试它 当我尝试在节点版本之间切换时 我不断收到 权限被拒绝 的消息 所以我决定也使用 sudo 命令来切换版本 就在那时 一切都崩溃了 我不断得到 dyld
  • 如何在终端中显示图像?

    是否有任何类型的实用程序可以用来将图像转换为 ASCII 然后在我的终端中打印 我寻找过 但似乎没有找到 一个名为cacaview http linux die net man 1 cacaview允许您执行此操作 它是交互式的 允许您平移
  • 在终端中访问文件“添加日期”

    在我的 Mac 上的下载文件夹中 文件有一个 添加日期 列 我正在尝试创建一个脚本来将超过 x 天的文件移至我的垃圾文件夹 以下方法有效 但它是根据创建 修改日期提取文件 而不是我从 Finder 中看到的 添加日期 有没有办法显示 使用这
  • 箭头键变成 Telnet 中的控制字符

    我在 Ubuntu 终端中 并通过 telnet 连接到服务器 现在每当我输入 up 时 它就会变成 A 其他箭头键也变成控制字符 有没有办法可以运行 telnet 以便它理解我的箭头键 这将是一个巨大的帮助 因为我想在我的命令历史记录中向
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • 如何检测来自 QNX 中 ncurses 的屏幕调整大小事件?

    我无法配置为接收有关使用 ncurses QNX Momentics 更改终端大小的事件 我使用Putyy作为终端 通过COM端口传输数据 我的问题是如何实现使用远程终端时接收屏幕变化事件 FILE fcons fopen dev ser1
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • 在Python中通过sys.stdout写入unicode字符串

    暂时假设一个人无法使用print 从而享受自动编码检测的好处 所以这给我们留下了sys stdout 然而 sys stdout太蠢了不做任何合理的编码 http bugs python org issue4947 现在人们阅读 Pytho
  • 如何在 Visual Studio Code 中从集成终端引用当前文件

    我想知道是否可以 使用内置变量 直接使用集成终端在 Visual Studio 中打开的当前文件 例如 gt some command current file Where current file would be a built in
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • 什么是 .un~ 文件或者为什么终端中的 Vim 会创建 .un~ 文件?

    我注意到我有一些以 un 例如我有一个 vividchalk vim un 但我不确定它是从哪里来的 看起来它们是我在终端中使用 Vim 时创建的 这些文件是什么 当我关闭正在编辑的文件时 可以让它们自行删除吗 当你编辑和保存文件时 Vim

随机推荐

  • 如何在 CentOS 8 上安装 OpenCV

    OpenCV 开源计算机视觉库 是一个开源计算机视觉库 绑定了 C Python 和 Java 并支持所有主要操作系统 它可以利用多核处理并具有 GPU 加速功能来实现实时操作 OpenCV 的应用非常广泛 包括医学图像分析 拼接街景图像
  • 如何在 Linux 中设置和列出环境变量

    在基于 Linux 和 Unix 的系统中 环境变量是一组动态命名值 存储在系统中 供在 shell 或子 shell 中启动的应用程序使用 简而言之 环境变量是具有名称和关联值的变量 环境变量允许您自定义系统的工作方式以及系统上应用程序的
  • 如何在 Debian 10 上安装 Gradle

    Gradle 是一个强大而灵活的构建工具 主要用于 Java 项目 结合了 Ant 和Maven 与使用 XML 进行脚本编写的前辈不同 Gradle 使用Groovy 一种动态的 面向对象的编程语言 用于 Java 平台定义项目和构建脚本
  • 如何在 Linux、Windows 和 macOS 上编辑 Hosts 文件

    Hosts 文件用于将域名 主机名 映射到 IP 地址 它是所有操作系统 包括 Linux Windows 和 macOS 都使用的纯文本文件 主机文件的优先级高于 DNS 当您输入要访问的网站的域名时 必须将域名转换为其相应的IP地址 操
  • Bash 连接字符串

    最常用的字符串操作之一是连接 字符串连接只是一个奇特的编程术语 用于通过将一个字符串附加到另一个字符串的末尾来将字符串连接在一起 在本教程中 我们将解释如何在 Bash 中连接字符串 连接字符串 连接两个或多个字符串变量的最简单方法是将它们
  • 如何在 Debian 9 上安装和使用 Docker Compose

    Docker 组合是一个允许您定义和编排多容器 Docker 应用程序的工具 它使用 YAML 文件来配置应用程序的容器 网络和卷 Compose 可用于多种目的 单主机应用程序部署 自动化测试和本地开发是 Docker Compose 最
  • 如何在 Debian 10 Linux 上安装 Apache Web 服务器

    Apache HTTP 服务器是世界上最流行的 Web 服务器之一 它是一个开源 跨平台的 HTTP 服务器 为大部分互联网网站提供支持 Apache 提供了许多强大的功能 可以通过附加模块进行扩展 在本教程中 我们将解释如何在 Debia
  • 如何在 Debian 9 上安装 PHP

    Debian 9 附带的 PHP 7 0 版本很快就会停止支持 并且不再接收安全更新 在本教程中 我们将引导您完成在 Debian 9 服务器上安装 PHP 7 2 的步骤 我们还将向您展示如何配置 Apache 和 Nginx 来运行 P
  • 如何在 Debian 9 上使用 VSFTPD 设置 FTP 服务器

    FTP 文件传输协议 是一种标准网络协议 用于在远程网络之间传输文件 为了更安全 更快速的数据传输 请使用SCP or SFTP 有许多可用于 Linux 的开源 FTP 服务器 最流行和最广泛使用的是PureFTPd ProFTPD an
  • Linux 中的 Xargs 命令

    The xargs实用程序允许您从标准输入构建和执行命令 它通常通过管道与其他命令结合使用 With xargs 您可以提供标准输入作为命令行实用程序的参数 例如mkdir and rm 在本教程中 我们将介绍使用xargs命令 如何使用L
  • 如何在 Ubuntu 18.04 上安装 Chromium Web 浏览器

    Chromium是一款专为现代网络打造的快速 稳定且安全的浏览器 它是许多浏览器的基础 包括世界上使用最广泛的网络浏览器谷歌浏览器 Chromium 和 Google Chrome 之间的主要区别在于 Chromium 是开源的 与 Chr
  • 如何在 Raspberry Pi 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome 的 JavaScript 引擎构建的开源跨平台 JavaScript 运行时环境 允许服务器端执行 JavaScript 代码 它主要用于构建服务器端应用程序 但作为全栈和前端解决方案也非常流行 n
  • 如何在 Debian 9 上安装 Tomcat 9

    Apache Tomcat 是一个开源应用程序服务器 支持 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术 它是当今世界上使用最广泛的应用程序和 Web 服务器之一 本
  • 如何在 Ubuntu 18.04 上安装 PrestaShop

    普斯塔商店是一个免费开源的电子商务平台 它基于 PHP 和 MySQL 可以通过免费和高级插件和主题进行扩展 PrestaShop 具有直观的管理界面 多个支付网关 多语言 分析和报告等功能 是许多在线商家的首选平台 在本教程中 我们将向您
  • 如何在 Ubuntu 18.04 上安装 Jenkins

    Jenkins是一个开源自动化服务器 提供了一种设置持续集成和持续交付 CI CD 管道的简单方法 持续集成 CI 是一种 DevOps 实践 团队成员定期将代码更改提交到版本控制存储库 然后运行自动化构建和测试 持续交付 CD 是自动构建
  • 如何在 CentOS 7 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中
  • Linux 中的 Pgrep 命令

    本文涵盖了 Linux 的基础知识pgrep命令 pgrep是一个命令行实用程序 允许您根据给定条件查找正在运行的程序的进程 ID 它可以是完整或部分进程名称 运行进程的用户或其他属性 The pgrep命令是的一部分procps or p
  • 安装和配置 Postfix 和 Dovecot

    这是我们的第二篇文章设置和配置邮件服务器系列 在这篇文章中 我们将向您展示如何安装和配置 Postfix 和 Dovecot 这是我们邮件系统的两个主要组件 Postfix 是一个开源邮件传输代理 MTA 是一种用于发送和接收电子邮件的服务
  • 如何在 Debian 10 上安装 Memcached

    Memcached 是一个免费开源的高性能内存键值数据存储 它通常用于通过缓存 API 和数据库调用结果中的各种对象来加速应用程序 本文介绍如何在 Debian 10 上安装和配置 Memcached 先决条件 您需要以以下身份登录具有 s
  • Linux 中的剪切命令

    Linux 和 Unix 系统中有许多实用程序可让您处理和过滤文本文件 cut是一个命令行实用程序 允许您从指定文件或管道数据中剪切部分行并将结果打印到标准输出 它可用于按分隔符 字节位置和字符来剪切行的各个部分 在本文中 我们将向您展示如