Sed 教程:高级 Sed 替换示例
在本文中,让我们通过几个实际示例来回顾一些在 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
示例 2 – sed / 分隔符:将 /opt/omni/lbin 替换为 /opt/tools/bin
当我们应该在路径名相关替换中使用 /
时,我们必须在替换数据中转义 /
,如下所示。 在这个 sed 示例中,分隔符 /
在 REGEXP 和 REPLACEMENT 部分中被转义。
$ sed 's/\/opt\/omni\/lbin/\/opt\/tools\/bin/g' path.txt
二、 sed &
获取匹配的字符串
正则表达式匹配的输入行的精确部分由 &
表示,然后可以在替换部分中使用。
示例 1 – sed & 用法:将 /usr/bin/ 替换为 /usr/bin/local
在下面的示例中,替换部分中的 &
将替换为匹配模式的 /usr/bin,并将其添加到 /local。 所以在输出中所有出现的 /usr/bin 都将替换为 /usr/bin/local。
$ sed 's@/usr/bin@&/local@g' path.txt
示例 2 – sed & 用法:匹配整行
&
用给定的 REGEXP 替换任何匹配项。
$ sed 's@^.*$@<<<&>>>@g' path.txt
在上面的示例中,正则表达式 ^.*$
匹配整行。 替换部分 <<<&>>>
分别在行首和行尾用 <<<
和 >>>
写入整行。
三、 Sed 中的分组和反向引用
分组可以像普通的正则表达式一样在 sed 中使用。 组用 \(
打开,用\)
关闭。分组可以与反向引用结合使用。
反向引用是对通过分组选择的正则表达式的一部分的重用。 sed 中的反向引用可用于正则表达式和替换命令的替换部分。
示例 1:仅获取每行中的第一个路径
在下面的示例中,\(\/[^:]*\)
匹配第一个冒号 :
出现之前可用的路径。 \1
替换第一个匹配的组。
$ sed 's/\(\/[^:]*\).*/\1/g' path.txt
示例 2:多组
在文件 path.txt 中更改文件最后一行中字段的顺序。
$ sed '$s@\([^:]*\):\([^:]*\):\([^:]*\)@\3:\2:\1@g' path.txt
在上面的命令中,$
指定仅对最后一行进行替换。输出显示最后一行中路径值的顺序已颠倒。
示例 3:获取 /etc/passwd 文件中的用户名列表
此 sed 示例仅显示 /etc/passwd 文件中的第一个字段。
$ sed 's/\([^:]*\).*/\1/' /etc/passwd
示例 4:为每个单词的第一个字符加上括号
这个 sed 示例会在每个单词的第一个字符前加上括号。
$ echo "Welcome To The Jiyik.com" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
示例 5:commify 简单的数字。
让我们创建一个名为 numbers 的文件,其中包含数字列表。 下面的 sed 命令示例用于将数字组合到数千。
numbers
1234
12121
3434
123
看下面的命令
$ sed 's/\(^\|[^0-9.]\)\([0-9]\+\)\([0-9]\{3\}\)/\1\2,\3/g' numbers
相关文章
解决 Linux Bash 中的 Nodemon 命令未找到错误
发布时间:2024/03/14 浏览次数:223 分类:操作系统
-
本文介绍如何解决 Linux Bash 中的 nodemon command not found 错误。
解决 Linux Bash 中的 Make Command Not Found 错误
发布时间:2024/03/14 浏览次数:246 分类:操作系统
-
本文介绍如何解决 Linux Bash 中的 make command not found 错误。
解决 Linux Bash 中 syntax error near unexpected token newline 错误
发布时间:2024/03/14 浏览次数:408 分类:操作系统
-
本文介绍如何解决 Linux Bash 中 syntax error near unexpected token newline 错误。
使用 PowerShell 将文件从 Windows 复制到 Linux
发布时间:2024/02/08 浏览次数:571 分类:编程语言
-
本教程将教你使用 PowerShell 将文件从 Windows 复制到 Linux。
等效于 Linux ls 的 PowerShell 命令
发布时间:2024/02/07 浏览次数:206 分类:编程语言
-
本教程将为 Linux ls 命令介绍不同的 PowerShell 等效命令。