迹忆客 专注技术分享

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

使用 Bash 替换字符串中的字符

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

涉及字符串文字的一种常见操作是用其他字符或子字符串替换该字符串中的单个字符或子字符串。

在本文中,我们将研究使用 BASH shell 进行字符串替换的几种方法。


方法 1 - 使用 tr 命令

tr 是一个非常方便的 Bash 命令,可用于对字符串执行不同的转换。 它在字符串转换(例如,将字符串的大小写更改为大写或小写)、删除子字符串重复以及搜索和替换子字符串方面特别有用。

它用于替换字符串中的字符和子字符串。

句法:

echo "$variableName" | tr [character(s)ToBeRemoved] [character(s)ToBeAdded]

脚本示例:

STR="ABCD"
echo "$STR" | tr A Z

输出:

ZBCD

字符串变量 $STR 中的字符“A”被替换为字符“Z”。 重要的是要注意,上述命令也适用于替换字符“A”的所有实例。

脚本示例:

STR="ABACAD"
echo "$STR" | tr A Z

输出:

ZBZCZD

对于更复杂的用例,例如用多个字符替换单个字符或用其他子字符串替换子字符串,仍然可以使用 tr 命令,但有必要合并并使用正则表达式 (RegEx) 来完成此类任务。

tr 的另一个有用的命令选项是 squeeze 或 -s 选项,它可以用单个字符替换一系列字符或子字符串。

脚本示例:

STR="ABBBCDDDDDE"
echo "$STR" | tr -s BD Z

输出:

AZCZE

可以看出,字符“B”和“D”的多个相邻出现被单个“Z”代替。


方法 2 - 使用 Bash 参数扩展

$ 符号前面通常带有变量名,用于为变量赋值或打印其内容。 但是,我们也可以将它用于参数扩展。

我们可以使用参数扩展以下列方式用给定的子字符串替换变量的内容。

句法:

${varName/substring/replacement}

请注意 ,对于变量扩展,大括号的使用是可选的。

脚本示例:

STR="I LIKE FOOTBALL"
echo ${STR/FOOTBALL/CRICKET}

输出:

I LIKE CRICKET

请注意 ,在参数扩展命令中的变量名后使用单个正斜杠仅替换第一次出现的子字符串。 使用以下脚本替换字符串或双正斜杠中出现的所有子字符串。

脚本示例:

${varName//substring/replacement}

方法 3 - 使用 sed 命令

sed 命令类似于 tr 命令。 尽管如此,它还是更强大,因为它可以用于直接编辑文本文件而无需打开它们。 BASH 中的 sed 命令代表流编辑器。 它对文件执行许多功能,例如搜索、查找和替换以及插入或删除。

sed 命令可用于以下方式的字符串替换。

脚本示例:

STR=AZC
echo "$STR" | sed -r 's/[Z]+/B/g'

输出:

ABC

这类似于使用 tr 命令。 sed 命令后的 -r 选项表示替换,模式匹配(RegEx)描述了查找和替换的内容。

请注意sed 命令的语法在不同系统上的 bash 版本之间略有不同,这可能会导致无法预料的行为。

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

本文地址:

相关文章

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便