如何从字符串中减去一些字符来打印字符串中的某些字符。
ggc-clusterdb01.rvd.ukd.com ggc-clsdb02.rvd.ukd.com gg-akb.rvd.ukd.com
如何从上面的主机名中减去
'01.rvd.ukd.com'
或'02.rvd.ukd.com'
,'03.rvd.ukd.com'
等字符,并打印其余的名称,如ggc-clsdb
或ggc-clusterdb
。我试过很多方法,但没有成功。帮我举个例子。
最佳答案
要从字符串中删除后缀模式,请使用语法:${parameter%%word}
。
例子:
$ foo=ggc-clusterdb01.rvd.ukd.com
$ echo ${foo%%01.rvd.ukd.com}
ggc-clusterdb
也可以使用通配符:
$ echo ${foo%%0*.rvd.ukd.com}
ggc-clusterdb
删除点后的所有内容:
$ echo ${foo%%.*}
ggc-clusterdb
来自
man bash
的解释:${parameter%%word}
删除匹配的后缀模式。这个词是
展开以生成模式,就像在路径名展开中一样。如果
模式匹配的扩展值的尾随部分
参数,则展开的结果是
具有最短匹配模式的参数(大小写为“%”)或
已删除最长匹配模式(大小写为“%”)。