在文本文件中搜索字符串 [关闭]

Posted

技术标签:

【中文标题】在文本文件中搜索字符串 [关闭]【英文标题】:search string in textfile [closed] 【发布时间】:2015-06-16 09:36:52 【问题描述】:

假设你有一个这样的文本文件

你想要的只是“size value

但是以不同的值重复超过一千次

"field_pic_flag : 0 
bottom_field_flag : 0 
idr_pic_id : 0 
Found NAL at offset  ,size 28813  !! Found NAL"

"field_pic_flag : 0 
bottom_field_flag : 0 
idr_pic_id : 0 
Found NAL at offset  ,size 210  !! Found NAL"

结果 我只是想要一个代码来编写一个具有这种格式的文本文件,如下所示

size 28813 size 210 and so on

【问题讨论】:

你一定要使用 C/C++ 吗?某种grep / awk / perl 脚本看起来更适合这项工作...... 因为,真的,grep "size [0-9]*" -o yourfile.txt > result.txt ... 感谢您的快速回复,我只需要结果的前 50 个... 【参考方案1】:

如果不强制使用 C/C++,那么grep 可能是你的朋友:

grep "size [0-9]*" -o yourfile.txt > all_sizes.txt

如果你只需要前 50 个结果,head 是:

head -n 50 all_sizes > result.txt

(现在,假设您使用的是某种 Unix 或 OS X ...)

【讨论】:

说文件中的值应该乘以 8 只是为了将字节转换为咬合。怎么做 那是另一个问题。在所有情况下,您都将进行字符串操作,因此任何脚本语言(python、ruby 等)都比 C/C++ 更适合该任务。除非是为了作业,在这种情况下,您应该相应地标记您的问题;)...【参考方案2】:

我看到问题被标记为 C/C++。如果您被允许使用 C++ 11,那么您可以轻松使用新引入的正则表达式库。

在下面的代码中,数据直接存储在字符串中,但您可以轻松地从文件中读取它。结果保存在result.txt文件中,同时显示在屏幕上。

#include <iostream>
#include <string>
#include <regex> // The new library introduced in C++ 11
#include <fstream>

int main()

    const int n = 50;
    int i = 0;

    std::ofstream outputFile;
    outputFile.open("result.txt");

    // You can read this string from your input file
    std::string s("\"field_pic_flag : 0\
        bottom_field_flag : 0\
        idr_pic_id : 0\
        Found NAL at offset, size 28813  !!Found NAL\"\
        \"field_pic_flag : 0\
        bottom_field_flag : 0\
        idr_pic_id : 0\
        Found NAL at offset, size 210  !!Found NAL\"");
    std::smatch m;
    std::regex e("size [0-9]*");   

    while (std::regex_search(s, m, e) && i++<n) 
        for (auto x : m) 
            std::cout << x << " ";
            outputFile << x << " ";
        
        std::cout << std::endl;
        outputFile << std::endl;
        s = m.suffix().str();
    

    outputFile.close();

    return 0;

经典的解决方案需要更多的努力。

【讨论】:

以上是关于在文本文件中搜索字符串 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式搜索 PDF 文件中的文本并告知页码? [关闭]

如何在 C# 中以编程方式搜索 PDF 文档 [关闭]

从文本文件中读取句子并使用 Python 3 附加到列表中 [关闭]

无需索引即可在文件中搜索字符串的工具[关闭]

使用 Python 搜索和输出 [关闭]

在文本文件中搜索和替换字符串