检查String的一部分> 1

时间:2013-11-19 03:15:07

标签: regex bash

我想使用bash脚本检查一个字符串。

我有一系列使用后缀创建的档案,例如“part1.rar”,“part2.rar”或只是一些数字,表示“test99.rar”中的位置。我想基于检查当前部分不是第一部分来采取一些行动。

例如,“test99.rar”,“747547548.part2.rar”和“archivexyz.part123.rar”应该触发动作但是“hello1.rar”和“multiarchive.part1.rar”不应该。

我尝试了这个失败:

if [[ "$archive" = *.part[>1].rar ]]
then
    echo "test - greater as 1"
fi

以下代码正在运行,但一次只能使用一位数字:

if [[ "$archive" = *.part2.rar ]]
then
    echo "test - greater as 1"
fi

你能帮我找一个解决方案吗?

2 个答案:

答案 0 :(得分:1)

这应该适合你:

if [[ $archive =~ ([2-9]|[1-9][0-9]+).rar$ ]]
then
    echo "test - greater as 1"
fi

请注意=~运算符,这是在bash中使用正则表达式匹配字符串时应该使用的运算符。有关bash上正则表达式可行的更多详细信息,请参阅this article

答案 1 :(得分:0)

真正的oneliner:

sed 's/.*[^0-9]1.rar//;t;s/.*/test - greater than 1/' $archive