Regex 搜索输出时间并对其进行汇总

Regex 搜索输出时间并对其进行汇总,regex,bash,grep,Regex,Bash,Grep,最终目标是建立一个具有动态统计信息的网站。 为此,我已经创建了一个mysql数据库,并统计了minecraft服务器上已知玩家的总数。 下一步是显示所有玩家的游戏时间。 我有一个“activetime.conf”,其中列出了所有玩家的游戏时间 activetime.conf: config { auto-save=300 default-range=5 max-range=10 } players { "111-111-1111-11-11" {

最终目标是建立一个具有动态统计信息的网站。 为此,我已经创建了一个mysql数据库,并统计了minecraft服务器上已知玩家的总数。 下一步是显示所有玩家的游戏时间。

我有一个“activetime.conf”,其中列出了所有玩家的游戏时间

activetime.conf:

config {
    auto-save=300
    default-range=5
    max-range=10
}
players {
    "111-111-1111-11-11" {
        name=playerjack
        time="2h13m25s"
    }
    222-2-22222-2-222 {
        name=playergert
        time="14m13s"
    }
}
players=$(ls -l /path | grep -v ^d | grep -v ^t | wc -l)
mysql -u root -pmypass mydatabase -e "UPDATE mytable SET players = '$players';"
hours_played=$(grep -E '"*h*m*s"' /path/activetime.conf)
echo $hours_played
time="2h13m25s" time="14m13s"
2
我已经拥有的:

config {
    auto-save=300
    default-range=5
    max-range=10
}
players {
    "111-111-1111-11-11" {
        name=playerjack
        time="2h13m25s"
    }
    222-2-22222-2-222 {
        name=playergert
        time="14m13s"
    }
}
players=$(ls -l /path | grep -v ^d | grep -v ^t | wc -l)
mysql -u root -pmypass mydatabase -e "UPDATE mytable SET players = '$players';"
hours_played=$(grep -E '"*h*m*s"' /path/activetime.conf)
echo $hours_played
time="2h13m25s" time="14m13s"
2
我们有下面的字符串“hours\u played”,并且喜欢搜索时间信息+总结时间,最终只显示完整的小时数

播放时间:

config {
    auto-save=300
    default-range=5
    max-range=10
}
players {
    "111-111-1111-11-11" {
        name=playerjack
        time="2h13m25s"
    }
    222-2-22222-2-222 {
        name=playergert
        time="14m13s"
    }
}
players=$(ls -l /path | grep -v ^d | grep -v ^t | wc -l)
mysql -u root -pmypass mydatabase -e "UPDATE mytable SET players = '$players';"
hours_played=$(grep -E '"*h*m*s"' /path/activetime.conf)
echo $hours_played
time="2h13m25s" time="14m13s"
2
最终结果应为:

config {
    auto-save=300
    default-range=5
    max-range=10
}
players {
    "111-111-1111-11-11" {
        name=playerjack
        time="2h13m25s"
    }
    222-2-22222-2-222 {
        name=playergert
        time="14m13s"
    }
}
players=$(ls -l /path | grep -v ^d | grep -v ^t | wc -l)
mysql -u root -pmypass mydatabase -e "UPDATE mytable SET players = '$players';"
hours_played=$(grep -E '"*h*m*s"' /path/activetime.conf)
echo $hours_played
time="2h13m25s" time="14m13s"
2
为什么结果是2?

2h13m25s + 14m13s = 2h27m38s (=2h)

您可以使用函数解析时间信息(小时、分钟、秒):

调用该函数将累计小时和分钟,例如:

time="8h13m25s"
time="6h54m13s"
将输出:

15 total hours

*将秒数相加并添加到总数已被省略,作为OP的练习,如果需要,可以添加。

请显示您的编码工作。您能分享更多示例吗?我编辑了我的问题,以显示目标和我拥有的内容。显示最终所需输出最终所需结果如下所示。“2”代表“2小时”。你做到了!Thx alot:)到时候,我会尝试将秒数加到总数中。需要注意的是,如果你能在只有分/秒的时间里加上“0h”,效果会更好。例如(0h25m35s)。。。否则,分钟和秒将被忽略,直到它们显示小时值。