我需要过滤破折号和数字之前的所有可能的字符串
fcp-workflow-4.3.0-SNAPSHOT.zip
例子:
fcp-工作流程-4.3.0-SNAPSHOT.zip
必须始终得到:fcp-workflow
或无论名称是什么。
这个名字可能fcp-worklflow-something-another-4.1.3....
意味着我不知道长度。
我尝试过使用cut -d
,但由于长度可以改变,也许有一种方法grep
可以完成这项工作。
以下是更多示例:
fcp-test-content-REVIEW-1.0-1.0.zip
dhl-pages-i18n-tags-blueprints-1.0.zip
GlobalLink Connect Plus-6.1.1_SP1.zip
logistics-ui-4.5.0-SNAPSHOT.zip"
logistics-ui-4.3.0-SNAPSHOT.zip"
答案1
您可以使用 bash 参数扩展来删除破折号和数字后面的最长字符串:
for file in *
do
printf '%s turns into %s\n' "${file}" "${file%%-[[:digit:]]*}"
done
答案2
要获取第一个破折号之前的所有内容,后跟一个数字:
sed -E 's/-[[:digit:]].*$//' file
通过用空字符串替换从第一个破折号和数字到行尾。
对于你的例子,我看到了-i18n
一条幸运地幸存下来的产品线。也许您希望有更严格的要求,例如匹配第一个破折号+数字+点+数字将如下所示:
sed -E 's/-[[:digit:]]+\.[[:digit:]]+.*$//' file