gpt4 book ai didi

linux - UNIX 从变量中删除字符

转载 作者:IT王子 更新时间:2023-10-29 01:05:25 25 4
gpt4 key购买 nike

我想从输入字符串中删除最后 4 个字符,然后在 sed 命令中使用它。但是我无法让它正常工作

newversion 为输入参数,设置为:5.5.5-dev。我想从输入参数中删除 -dev。

我尝试过的:

version=${$newversion::-4}
sed -i "s|\(<<some name i defined>>/$imagename:\)\([^\n]*\)|\1$version|" docker-compose.yml

错误:

错误的替换

最佳答案

sed 对于这个问题来说太过分了。要从任何 POSIX shell 中的字符串末尾删除 -dev,请使用

version=${newversion%-dev}

或更一般地

version=${newversion%-???}  # Remove the final - and the next 3 characters

甚至

version=${newversion%-*}  # Remove the final - and anything after it.

如果您正在使用 bash(您似乎没有使用),那么您的第一次尝试很接近;你只是有一个额外的$。应该是

version=${newversion::-4}

尽管该位置的负值需要 bash 4。在 bash 3 中,您需要使用字符串的长度计算该值:

version=${newversion::${#newversion}-4}

关于linux - UNIX 从变量中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35130474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com