Trim 基于 Bash 中特定字符的字符串(尾端)
Trim a string (tailing end) based on a specific character in Bash
我一直在寻找如何 trim 一个字符串 Bash,从尾端,一旦我击中某个字符。
示例:如果我的字符串是这个(或任何 link):https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip
(我将其设置为我的变量)。
(即,如果我 echo $var
它将 return 那 link:)
我想使用 Bash,我猜我需要使用 sed 或 awk,但我想 trim,从最后开始直到我看到第一个 / (因为将是文件名)并将其删除。
所以使用那个 link,我试图在 / 之后得到 jus "MyFoodapediaData.zip" 并将其设置为不同的变量。
所以最后,如果我回显 $var2(如果我这样称呼它),它只会 return: MyFoodapediaData.zip"
我尝试使用 sed 's.*/" ,它将从头开始,直到找到第一个斜杠。如果可能的话,我一直在寻找相反的顺序。
您可以为此使用 bash 内置参数替换:
$ var='https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip'
$ echo "$var"
https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip
$ var2=${var##*/}
$ echo "$var2"
MyFoodapediaData.zip
${var##*/}
表示 "from the beginning of the value of the var
variable, remove everything up to the last slash."
参见手册中的parameter substitution
我一直在寻找如何 trim 一个字符串 Bash,从尾端,一旦我击中某个字符。
示例:如果我的字符串是这个(或任何 link):https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip
(我将其设置为我的变量)。
(即,如果我 echo $var
它将 return 那 link:)
我想使用 Bash,我猜我需要使用 sed 或 awk,但我想 trim,从最后开始直到我看到第一个 / (因为将是文件名)并将其删除。
所以使用那个 link,我试图在 / 之后得到 jus "MyFoodapediaData.zip" 并将其设置为不同的变量。
所以最后,如果我回显 $var2(如果我这样称呼它),它只会 return: MyFoodapediaData.zip"
我尝试使用 sed 's.*/" ,它将从头开始,直到找到第一个斜杠。如果可能的话,我一直在寻找相反的顺序。
您可以为此使用 bash 内置参数替换:
$ var='https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip'
$ echo "$var"
https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip
$ var2=${var##*/}
$ echo "$var2"
MyFoodapediaData.zip
${var##*/}
表示 "from the beginning of the value of the var
variable, remove everything up to the last slash."
参见手册中的parameter substitution