这看起来太简单了,但仍然无法实现。我有:
-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
等等