迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Sed 教程:高级 Sed 替换示例

作者:迹忆客 最近更新:2022/10/31 浏览次数:

在本文中,让我们通过几个实际示例来回顾一些在 sed 中使用“s”替代命令的有趣解决方法。

一、sed替换分隔符

正如我们在之前文章中所讨论的,我们可以在sed 替换命令中使用不同的分隔符,例如 @ % | ; :

让我们首先创建 path.txt 文件,将在下面提到的所有示例中使用到该文件。

path.txt

/usr/kbos/bin:/usr/local/bin:/usr/jbin:/usr/bin:/usr/sas/bin
/usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/opt/omni/bin:
/opt/omni/lbin:/opt/omni/sbin:/root/bin

示例 1 – sed @ 分隔符:将 /opt/omni/lbin 替换为 /opt/tools/bin

当我们替换包含 / 的路径名时,我们可以使用 @ 作为分隔符而不是 /。 在下面的 sed 示例中,在输入文件的最后一行中,**/opt/omni/lbin** 已更改为 /opt/tools/bin

$ sed 's@/opt/omni/lbin@/opt/tools/bin@g' path.txt

sed 分隔符路径替换

示例 2 – sed / 分隔符:将 /opt/omni/lbin 替换为 /opt/tools/bin

当我们应该在路径名相关替换中使用 / 时,我们必须在替换数据中转义 /,如下所示。 在这个 sed 示例中,分隔符 /REGEXPREPLACEMENT 部分中被转义。

$ sed 's/\/opt\/omni\/lbin/\/opt\/tools\/bin/g' path.txt

sed 分隔符 斜线作为正则表达式分隔符


二、 sed & 获取匹配的字符串

正则表达式匹配的输入行的精确部分由 & 表示,然后可以在替换部分中使用。

示例 1 – sed & 用法:将 /usr/bin/ 替换为 /usr/bin/local

在下面的示例中,替换部分中的 & 将替换为匹配模式的 /usr/bin,并将其添加到 /local。 所以在输出中所有出现的 /usr/bin 都将替换为 /usr/bin/local

$ sed 's@/usr/bin@&/local@g' path.txt

sed 使用&获取匹配的字符串

示例 2 – sed & 用法:匹配整行

& 用给定的 REGEXP 替换任何匹配项。

$ sed 's@^.*$@<<<&>>>@g' path.txt

sed &使用替换整行

在上面的示例中,正则表达式 ^.*$ 匹配整行。 替换部分 <<<&>>> 分别在行首和行尾用 <<<>>> 写入整行。


三、 Sed 中的分组和反向引用

分组可以像普通的正则表达式一样在 sed 中使用。 组用 \( 打开,用\)关闭。分组可以与反向引用结合使用。

反向引用是对通过分组选择的正则表达式的一部分的重用。 sed 中的反向引用可用于正则表达式和替换命令的替换部分。

示例 1:仅获取每行中的第一个路径

在下面的示例中,\(\/[^:]*\) 匹配第一个冒号 : 出现之前可用的路径。 \1 替换第一个匹配的组。

$ sed 's/\(\/[^:]*\).*/\1/g' path.txt

sed 分组和反向引用仅获取每行中的第一个路径

示例 2:多组

在文件 path.txt 中更改文件最后一行中字段的顺序。

$ sed '$s@\([^:]*\):\([^:]*\):\([^:]*\)@\3:\2:\1@g' path.txt

sed 多组更改文件最后一行中字段的顺序

在上面的命令中,$ 指定仅对最后一行进行替换。输出显示最后一行中路径值的顺序已颠倒。

示例 3:获取 /etc/passwd 文件中的用户名列表

此 sed 示例仅显示 /etc/passwd 文件中的第一个字段。

$ sed 's/\([^:]*\).*/\1/' /etc/passwd

sed 分组示例获取文件中的用户名列表

示例 4:为每个单词的第一个字符加上括号

这个 sed 示例会在每个单词的第一个字符前加上括号。

$ echo "Welcome To The Jiyik.com" | sed 's/\(\b[A-Z]\)/\(\1\)/g'

sed 分组每个单词的第一个字符加上括号

示例 5:commify 简单的数字。

让我们创建一个名为 numbers 的文件,其中包含数字列表。 下面的 sed 命令示例用于将数字组合到数千。

numbers

1234
12121
3434
123

看下面的命令

$ sed 's/\(^\|[^0-9.]\)\([0-9]\+\)\([0-9]\{3\}\)/\1\2,\3/g' numbers

sed 分组 commify 简单的数字

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

本文地址:

相关文章

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 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 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。

在 Linux 中计算文件中的唯一行

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

计算文件中的唯一行是 Linux 中的一项常见任务,可以使用多种不同的工具和方法来执行此操作。使用 sort 和 uniq 命令计算文件中的唯一行数

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便