我有代表版本的字符串(总是采用以下格式):
1.0.0
1.1.0
1.5.0
20.189.0
456874.0.0
字符串的最后一部分始终为.0
。
现在我正在搜索bash中的一种方法,我可以用.X
1.0.X
1.1.X
9.5.X
20.189.X
...
答案 0 :(得分:5)
sed -i 's/.$/X/' filename
它将在每行中用X
替换最后一个字符,重写文件filename
。
答案 1 :(得分:3)
使用bash
操作:
str='1.0.0'
echo "${str/%.0/.X}"
1.0.X
或者:
echo "${str%.0}.X"
1.0.X
答案 2 :(得分:0)
如果字符串在文件file
中:
$ cat file
1.0.0
456874.0.0
1.1.666
(注意上面的最后一个)
$ for s in $(cat file) ; do echo ${s%.*}.X ; done
1.0.X
456874.0.X
1.1.X
答案 3 :(得分:0)
由于我们有bash,我们也可以使用超简单的“索引到最后一个char并替换它,例如。
str=1.0.0
要索引你使用的最后一个字符${str:0:$((${#str}-1))}
(只是str:0:to_last-1
),所以要替换最后一个字符,你只需在最后添加新的最后一个字符,例如
$ str=1.0.0
$ echo ${str:0:$((${#str}-1))}X
1.0.X
在bash中总有多种方法可以使用skin-the-cat。
(就个人而言,我会使用参数扩展和子串删除 - 但这些已经被采用了......)
答案 4 :(得分:0)
非常简单的方法是
str=testString
echo ${str%?}X
它只选择没有最后一个字符的字符串,并将X作为尾随字符附加
答案 5 :(得分:0)
$ hostname -i | sed 's/.$/1/'
$ echo "xyt" | sed 's/.$/z/'