如何在linux中打印字符串中的特定字符?

如何在linux中打印字符串中的特定字符?,linux,bash,shell,unix,Linux,Bash,Shell,Unix,如何通过从整个字符串中减去一些字符来打印字符串中的某些字符 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 我试过很多方法,但都没有成功。请帮我举个例子。要从字符串中删除后缀模式,请使用以下语法

如何通过从整个字符串中减去一些字符来打印字符串中的某些字符

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}

删除匹配的后缀模式。这个词是 展开以生成模式,就像在路径名展开中一样。如果 模式匹配扩展值的尾随部分 参数,则展开的结果是的展开值 具有最短匹配模式的参数(大小写为“%”),或 已删除最长的匹配模式(“%%”大小写)


在问题中陈述你尝试过的“多种方式”。你可以试着回答这个问题。你的答案更好,我会删除我的。要删除点后的所有内容,请使用echo${foo%.*}