bash - 根据 Bash 中的特定字符修剪字符串(尾部)

标签 bash awk sed trim

我试图弄清楚一旦我击中某个字符,如何从尾部修剪 Bash 中的字符串。

示例:如果我的字符串是这个(或任何链接):https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip

(我将其设置为我的变量)。 (即,如果我 echo $var 它将返回该链接:)

我想使用 Bash,我猜我需要使用 sed 或 awk,但我想修剪,从末尾开始,直到看到第一个/(因为将是文件名)和把它去掉。

因此,使用该链接,我试图获取/所以只是“MyFoodapediaData.zip”并将其设置为不同的变量。

所以最后,如果我 echo $var2 (如果我这样调用它)它只会返回: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##*/} 表示“从 var 变量值的开头开始,删除直到最后 斜杠。”

参见parameter substitution在手册中

关于bash - 根据 Bash 中的特定字符修剪字符串(尾部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42587819/

相关文章:

linux - 在特定字母/符号后将文件 2 中的行插入文件 1

linux - 不使用 SED 反向引用删除重复字符

regex - 删除换行符后跟多个选项卡正则表达式

python - 如何在 python 环境中的 linux 文件中的特定模式或行号之后添加多行

linux - 使用 bash 脚本在现有 screen session 中通过 Enter 键传递命令

bash - 在标记之间洗牌文件的各个部分

linux - 如何在 Perl 中将文件拆分为给定数量的部分? (在 Unix 上)

bash - for循环检查多个var以返回空var的名称

linux - 我怎样才能重新排序包含在 C 头文件中的内容?

awk - 如何使用awk将第一列和第二列的第一行打印为单列?