C#如何从大文件中对内容进行grep
我非常熟悉python,现在正在学习C。请帮帮我 我有一个大文件,但在这个大文件中,我只想grep这个内容并将其写入一个单独的文件中C#如何从大文件中对内容进行grep,c#,C#,我非常熟悉python,现在正在学习C。请帮帮我 我有一个大文件,但在这个大文件中,我只想grep这个内容并将其写入一个单独的文件中 RxDqLeft RxDqRight RxVLow RxVHigh TxDqLeft TxDqRight TxVLow TxVHigh -------------------------------------------------------------------------------- N1.C0.D0.R
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你的代码错了。正如阴影向导所指出的,您必须向循环中添加某种中断条件。