BASH:在字符串之前获取文本

时间:2017-02-04 14:30:36

标签: bash shell

如何在Bash中的分隔符字符串之前获取文本?喜欢: str="Hello World! It's a nice Day!"我需要在nice之前获取所有内容。 echo $str应该告诉我Hello World! It's a 谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用%%%运算符:

$ str="Hello World! It's a nice Day!" ; echo "<${str%%nice *}>"
<Hello World! It's a>

这将删除最长的后缀。

请参阅bash reference manual

  

${parameter%word}
  ${parameter%%word}

     

扩展以生成与文件名扩展一样的模式。如果模式匹配展开的尾部   参数的值,则扩展的结果是值   具有最短匹配模式的参数(“%”情况)或   最长匹配模式(“%%”案例)已删除。如果参数为“@”   或“*”,模式删除操作应用于每个位置   依次参数,扩展是结果列表。如果   参数是一个使用“@”或“*”下标的数组变量,   模式删除操作应用于数组的每个成员   转,并且扩展是结果列表。