使用 Bash 替换字符串中的字符
涉及字符串文字的一种常见操作是用其他字符或子字符串替换该字符串中的单个字符或子字符串。
在本文中,我们将研究使用 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 版本之间略有不同,这可能会导致无法预料的行为。
相关文章
在 Bash 中运行 find -exec 命令
发布时间:2024/03/14 浏览次数:127 分类:操作系统
-
本文将演示如何使用 find 命令的 -exec 参数来使用 find 命令定位文件中的任何文本。