Bash脚本提取子字符串,转换为整数

时间:2015-06-18 15:33:38

标签: bash substring indexof

我正在编写一个bash脚本,该脚本执行一个返回带有

形式的字符串的命令

/ folder / file_NNNN llll.killAt =“nn ... nn”

我想做以下

  • 在.killAt =
  • 之后用引号提取数字部分
  • 将其与当前时间进行比较
  • 如果当前时间更长,则删除有问题的文件

我的bash技能有限。我尝试通过发出

来识别killAt部分的索引
ndx=`expr index "$rslt" killAt` 

这个想法是,一旦我掌握了索引,我就可以提取数字位并对其进行处理。但是,我在ndx中获得的并不是KillAt的所有位置,所以我犯了一个错误。我不确定/, - 和“在要搜索的字符串中是否存在问题。

我可以通过运行PHP脚本来完成上述所有操作,但如果我这样做会更多,因为我无法正确使用bash脚本。我非常感谢这里的任何帮助。

1 个答案:

答案 0 :(得分:3)

expr实际上只需要在POSIX shell中进行正则表达式匹配。其所有其他功能都在bash本身实现。

# A regular expression to match against the file name.
# Adjust as necessary; the (.*) is capture group to
# extract the timestamp.
regex='/folder/file_???? ????\.killAt="(.*)"'
# Match, and if it succeeds, retrieve the captured time
# from the BASH_REMATCH array.
if [[ $rslt =~ $regex ]]; then
    ndx=${BASH_REMATCH[1]}
    if (( ndx > $(date +%s) )); then
        rm "$rslt"
    fi
fi