如何使用 QRegExp grep 进程的最后一行输出?

Posted

技术标签:

【中文标题】如何使用 QRegExp grep 进程的最后一行输出?【英文标题】:how to use QRegExp to grep the last line of output of process? 【发布时间】:2015-08-23 13:17:32 【问题描述】:

我正在使用 QRegExp 通过 grep 输出 QProcess 的最后一行

QString str (process->readAllStandardOutput());

现在我想阅读 str 的最后一行并在状态栏中显示 请问怎么才能只得到最后一行:(

【问题讨论】:

为什么要使用正则表达式? str.mid(str.lastIndexOf('\n')+1) 左右。 使用 rx.indexIn(l​​ine); 让它工作; 实际上我需要从字符串中获取一些特定信息,这就是我选择 QRegExp 的原因;) 【参考方案1】:

使用 QRegExp 得到了一个可行的解决方案

代码示例

QString line(download->readAllStandardOutput());
QString progress;
QString timeRemaining;
if (line.contains(QString("[download]"), Qt::CaseInsensitive)) 
    QRegExp rx("(\\d+\\.\\d+%)");
    timeRemaining = line.right(5);
    rx.indexIn(line);
    if(!rx.cap(0).isEmpty()) 
        progress = rx.cap(0);
        progress.chop(3);
        ui->downloadProgressBar->setValue(progress.toInt());
        ui->downloadProgressBar->setAlignment(Qt::AlignCenter);
        ui->downloadProgressBar->setFormat(timeRemaining);
        ui->statusBar->showMessage(line);

【讨论】:

以上是关于如何使用 QRegExp grep 进程的最后一行输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用grep精确匹配一个单词

如何获取 android 的系统日志 logcat

ps 和 grep 查找消除 grep自身查找

ps 和 grep 查找消除 grep自身查找

ps -efgrep

Linux下如何查看哪些进程占用的CPU内存资源最多