我打算尝试弄清楚Bash中的一个字符串是如何在跟踪某个字符后从尾端修剪的。
示例:如果我的字符串是此(或任何链接):https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip
(我将其设置为我的变量)。
(即如果我echo $var
它将返回该链接:)
我想要使用Bash,我猜我需要使用sed或awk,但我想修剪,从结束开始直到我看到第一个/(因为将是文件名)并将其剥离。
因此,使用该链接,我试图获得/#jus" MyFoodapediaData.zip"并将其设置为另一个变量。
所以最后,如果我回显$ var2(如果我称之为),它将返回:MyFoodapediaData.zip"
我尝试过使用sed' s。* /"这将从头开始,直到找到第一个斜杠。如果可能的话,我正在寻找相反的顺序。
答案 0 :(得分:3)
您可以使用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##*/}
表示"从var
变量值的开头,删除 last 斜杠的所有内容。"
请参阅手册中的parameter substitution