从字符串中的特定位置删除字符

从字符串中的特定位置删除字符

这看起来太简单了,但仍然无法实现。我有:

-X-1.5

并需要:

-X1.5

使用:

echo -X-1.5 | tr -d '-'

给出:

X1.5

它很接近,但还不够接近。

欢迎大家指点,

答案1

另一个 sed 解决方案

echo "-X-1.5" | sed 's/-//2'

将第二次出现的 - 替换为任何内容。

答案2

如果你知道要删除的字符位于位置 2(从 0 开始计数),你可以这样做:

VAR="-X-1.5"
echo "${VAR:0:2}${VAR:3}"

这会给-X1.5.

如果它是您想要删除的字符的第一个实例,但您事先不知道它的位置,您可以这样做:

VAR="X-1.5-oh"
echo "${VAR/-/}"

这会给X1.5-oh.

答案3

由于要删除的部分恰好不在开头、结尾,也不是完全删除,因此它排除了许多通用快捷方式,转而采用更具体的内容来匹配已知模式,因此这实际上取决于模式将..

-X例如,如果您希望-删除该模式,则您可以:

$ echo "-X-1.5" | sed 's/-X-/-X/g'

结果:

-X1.5
  • 搜索-X-
  • 替换为-X
  • /g贪婪地执行它意味着所有此类事件,以防万一你有-X-1.5-X-2.5-X-3.5等等

相关内容