如何在linux中打印字符串中的某些字符?

时间:2013-12-31 08:47:28

标签: 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-clsdbggc-clusterdb

我在很多方面尝试过,但没有运气。帮我举个例子。

1 个答案:

答案 0 :(得分:3)

要从字符串中删除后缀模式,请使用以下语法:${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}

     

删除匹配的后缀模式。这个词是   扩展为生成模式,就像路径名扩展一样。如果   pattern匹配扩展值的尾部   参数,然后扩展的结果是扩展值   具有最短匹配模式的参数('''''表示)或   删除了最长的匹配模式(''%%''个案)。