sed "s/\(\.apk\).*/\1/g" <<< '/path/to/the/file.apk/app.apk(characters)'
#This will print:
/path/to/the/file.apk
解决方案 2
如果您想避免上述问题,您将不得不使用:
sed "s/\(.*\.apk\).*/\1/g" <<< '/path/to/the.apk212/file.apk12ll/app.apk(aa)dfd'
#This will print:
/path/to/the.apk212/file.apk12ll/app.apk
sed "s/\(.*\.apk\).*/\1/g" <<< '/path/to/the/file/app.apk(aa)dfd'
#This will print
/path/to/the/file/app.apk
您可以使用 POSIX 字符串操作 - 无需外部命令,例如
sed
.输出
这必然假定您的“随机字符”不是真正随机的,因此不包括字符串
.apk
。如果它们可能包含此字符串,但可以保证您的路径(前缀)不包含它,那么您可以替换%
为%%
.如果您的路径遵循相同的模式:
.apk(somerandomcharracters)
您可以通过在 pattern 之后替换 all 来删除.apk
。删除不需要的字符有两种方法:解决方案 1
上面代码的问题是,如果某个目录包含该模式
.apk
,或者.apk(randomchars)
输出将不像您所期望的那样,例如解决方案 2 如果您想避免上述问题,您将不得不使用:
顺便说一句,我宁愿使用 roaima 的答案。