Bash 字符串替换 - bug?

问题描述 投票:0回答:1

我正在尝试在 bash 中进行一些文件管理, 我有这种格式的字符串:

1 dir/hello.txt
2 dir2/bar.jpg

当我运行此替换时:

${FOO/[:space:]*/Hello}
我得到这个结果:
1 dir/hHello

目标是替换第一个之后的所有内容 空间(包括空间)与

Hello

对我来说似乎是一个错误。在这种情况下,请确认并 我会把这个问题带到上游。

string bash substitution
1个回答
0
投票

你几乎猜对了。来自您的引用

[
]
中,可以使用语法
[:class:]
指定字符类,其中
class
是 POSIX 标准中定义的以下类之一:[...]

所以,你需要在方括号上加倍:

s='1 dir/hello.txt'
echo "${s/[[:space:]]*/Hello}"

产生

1Hello

© www.soinside.com 2019 - 2024. All rights reserved.