Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何从大文件中对内容进行grep_C# - Fatal编程技术网

C#如何从大文件中对内容进行grep

C#如何从大文件中对内容进行grep,c#,C#,我非常熟悉python,现在正在学习C。请帮帮我 我有一个大文件,但在这个大文件中,我只想grep这个内容并将其写入一个单独的文件中 RxDqLeft RxDqRight RxVLow RxVHigh TxDqLeft TxDqRight TxVLow TxVHigh -------------------------------------------------------------------------------- N1.C0.D0.R

我非常熟悉python,现在正在学习C。请帮帮我

我有一个大文件,但在这个大文件中,我只想grep这个内容并将其写入一个单独的文件中

                RxDqLeft RxDqRight RxVLow RxVHigh TxDqLeft TxDqRight TxVLow TxVHigh
    --------------------------------------------------------------------------------
    N1.C0.D0.R0:   -16       16       -23       21      -19     19      -14      14
    N1.C0.D0.R1:   -17       16       -23       21      -20     20      -15      14
    STOP_RMT_N1
我试过很多东西。我真的需要帮助。这是我的代码,似乎不起作用

using (StreamReader sr = new StreamReader(@"C:\users\20609\Desktop\801968_20140606_024500.txt"))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    if (line.Contains("RxDqLeft RxDqRight RxVLow RxVHigh TxDqLeft TxDqRight TxVLow TxVHigh"))
                    {
                        continue;
                    }
                    while (!line.Contains("STOP_RMT_N1"))
                    {
                        list.Add(line);
                        continue;
                    }



                }
            }

如果您想在包含
STOP\RMT\u N1
的行之前取所有行,而不取第一行(包含标题),可以这样做

var list = File.ReadAllLines(@"C:\users\20609\Desktop\801968_20140606_024500.txt")
               .Skip(1)//don't take title, which is probably (?) on first line
               .TakeWhile(m => !m.StartsWith("STOP_RMT_N1"));//or Contains if STOP_RMT_N1 is not at start of line
当然,如果文件太大,则
File.ReadAllLines
可能会出现性能问题。那么流阅读器可能是有用的

因此,您可以将代码更正为

using (StreamReader sr = new StreamReader(@"C:\users\20609\Desktop\801968_20140606_024500.txt"))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    if (line.Contains("RxDqLeft RxDqRight RxVLow RxVHigh TxDqLeft TxDqRight TxVLow TxVHigh"))
                        continue;//loop to next line

                    if (line.Contains("STOP_RMT_N1")
                        break;//get out of the loop

                    list.Add(line);

                }
            }

你犯了什么错误?内存不足?您在这里遇到了无休止的循环:
而(!line.Contains(“STOP\u RMT\u N1”)
我没有得到要在中显示的预期内容output@user3148235你的代码错了。正如阴影向导所指出的,您必须向循环中添加某种中断条件。