迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Bash 中的 sed 命令

作者:迹忆客 最近更新:2023/03/17 浏览次数:

sed 命令是一个基于替换概念的流式文本编辑器。

它用于发现、插入、替换和删除文件片段。你可以使用此程序修改文件而无需打开它们。

本教程将介绍 sed Linux 程序的基础知识、其语法以及直接用于搜索和替换文件的正则表达式语法。

Bash sed 语法

sed 通常用于处理来自标准输入或文件的文本流。这意味着你可以将另一个命令的输出直接传递到实用程序的输入进行编辑,或者你可以与已经创建的文件进行交互。

默认情况下,所有结果都发送到标准输出,这意味着它们将显示在屏幕上,而不是保存到文件中,直到重定向。

以下是命令语法:

$ sed [options] commands [file-to-edit]

file-to-edit 表示文件的位置,而 options 表示操作给定文件时的规则。以下是它的一些主要选择:

  • -n, -quiet:每次迭代后,不输出模板缓冲区的内容。
  • -e:运行以进行编辑的命令。
  • -f:从文件中读取编辑命令。
  • -i:在编辑之前创建文件的备份副本。
  • -l:允许你设置行长。
  • -r:支持扩展的正则表达式语法。
  • -s:传输多个文件时,将它们视为单独的流,而不是一个冗长的流。

Bash sed 示例

我们创建了一个名为 demosed.txt 的文件,并将其保存在主目录中,内容如下:

demosed

首先显示主目录中文件 demosed.txt 的第 1 行到第 5 行。

我们将使用 p 命令来执行此操作。我们使用 -n 选项来打印我们需要的内容,而不是在每次迭代时打印模板缓冲区的全部内容。

$ sed -n '1,5p' demosed.txt

输出:

This is the first line.
This is the second line.
This is the third line.
This is the fourth line.
This is the fifth line.

要输出整个文件(不包括第 1-10 行):

$ sed '1,10d' demosed.txt

我们使用 d 而不是 p 命令来删除文本。在这种情况下,我们没有使用 -n 选项来显示所有内容,因为该实用程序会显示我们使用 delete 命令时未删除的所有内容,而是使用 d 命令清除不需要的内容。

输出:

This is the eleventh line.
This is the twelveth line.
This is the thirteenth line.
This is the fifteenth line.

正如预期的那样,只打印了从 11 到 15 的行。

当我们打开 demosed.txt 时,我们将看到与运行前一个命令时相同的命令。

出于安全考虑,sed 默认情况下不会更改源文件。 -i 选项表示就地编辑,可用于篡改原始文件。

要从文件中删除 14th 行:

$ sed -i '13~15d' demosed.txt

上面的命令没有给出任何输出。让我们看看文件里面的内容。

演示 1

与文件的旧版本相比,我们看到第 14 行带有文本 This is thirteenth line. 不见了。

正则表达式也可以在 sed 中与 options 一起使用。让我们看一个例子。

$ sed '/^nine\|^$\| *nine/d' demosed.txt

输出:

This is the first line.
This is the second line.
This is the third line.
This is the fourth line.
This is the fifth line.
This is the sixth line.
This is the seventh line.
This is the eighth line.
This is the tenth line.
This is the eleventh line.
This is the twelveth line.
This is the fifteenth line.

'/^nine\|^$\| *nine/' 是检测带有单词 nine 的句子的正则表达式操作。上面的命令不会篡改原始文件,因为我们没有使用 -i,但是我们可以看到带有 nine 的行被过滤掉了。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 CentOS 中获取 IP 地址

发布时间:2023/05/04 浏览次数:108 分类:操作系统

这篇简短的文章是对 CentOS 的一个简短介绍,然后简要讨论了我们如何使用命令行界面 (CLI) 在 CentOS 中获取服务器 IP 地址。

在 Linux 中更新 YUM

发布时间:2023/05/04 浏览次数:82 分类:操作系统

本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。

在 Linux 中安装 Deb 文件

发布时间:2023/05/04 浏览次数:130 分类:操作系统

本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。

Linux 中的 lsof 命令

发布时间:2023/05/04 浏览次数:82 分类:操作系统

在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。

Linux 中的 ps aux 命令

发布时间:2023/05/04 浏览次数:69 分类:操作系统

本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。

Linux 中的 NTP

发布时间:2023/05/04 浏览次数:137 分类:操作系统

本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。

在 Bash 中创建进度条

发布时间:2023/05/04 浏览次数:164 分类:操作系统

这是有关在 Bash 中创建进度条以显示正在运行的命令或进程的进度的指南。本文将探讨在 Bash(Linux 和 macOS 的默认 shell)中向 shell 脚本添加进度条的几种方法。使用 pv 命令在 Bash 中创建进度条

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便