从字符串变量中删除数字(去除数字字符)

Geo*_*rge 7 shell bash string

我想从字符串变量中去除所有数字字符,例如:

VARIABLE=qwe123rty567
Run Code Online (Sandbox Code Playgroud)

到:

echo $VARIABLE
> qwerty
Run Code Online (Sandbox Code Playgroud)

我搜索了很多帖子,但他们要么使用 sed 输出到文件/文件名,要么输出到 echo。由于空白,我无法使用它:

VARIABLE=$VARIABLE | sed 's/[0-9]*//g'
Run Code Online (Sandbox Code Playgroud)

cuo*_*glm 12

bash

$ printf '%s\n' "${VARIABLE//[[:digit:]]/}"
qwerty
Run Code Online (Sandbox Code Playgroud)

[:digit:]可以包含 0 到 9 以外的其他字符,具体取决于您的语言环境。如果您只想删除 0 到 9,请改用Clocale。

  • 注意:根据您的语言环境,`[:digit:]` 可能包含比您预期的更多或更少的内容。如果您只想要数字 0 到 9,请使用 `LC_COLLATE=C` 和 `[0-9]`。 (2认同)

oco*_*odo 7

对于多样性,这里的方法使用

tr

VARIABLE=$(printf '%s' "$VARIABLE" | tr -d '0123456789')
Run Code Online (Sandbox Code Playgroud)

sed

VARIABLE=$(printf '%s' "$VARIABLE" | sed 's/[0-9]//g')
Run Code Online (Sandbox Code Playgroud)

Bash 扩展,迄今为止最简洁的:

VARIABLE=${VARIABLE//[0-9]/}
Run Code Online (Sandbox Code Playgroud)

最后再次进行 Bash 扩展,这次使用的是[[:digit:]]字符类。

VARIABLE=${VARIABLE//[[:digit:]]/} 
Run Code Online (Sandbox Code Playgroud)

请注意(正如其他人指出的那样)[[:digit:]], , 应该涵盖在您的语言环境中定义为数字的任何内容。