我正在尝试将我的方式改为文本文件,以便在第二个richtextbox中搜索,计算和显示结果,因为我们在整个文本文件中找到了我们要查找的内容(已加载到第一个richtextbox中)< / p>
int totalOUTgroups = Lines(ofd.FileName)
.Select(line => Regex.Matches(line, @"access-group\s+\w+\s+out\s+interface\s+\w+").Count)
.Sum();
// then list the count into the box or save it for later reports
if (totalOUTgroups > 0)
{
richTextBox2.SelectionFont = new Font("Courier New", 8);
richTextBox2.AppendText(">>>ACls using OUT are out: " + "\u2028");
richTextBox2.AppendText(">>>Total found: " + totalOUTgroups.ToString() + "\u2028");
string config = File.ReadAllText(ofd.FileName);
string accessgroupOut = @"(access-group\s+\w+\s+out\s+interface\s+\w+)";
Regex ace = new Regex(accessgroupOut, RegexOptions.IgnoreCase | RegexOptions.Multiline);
Match findGroup = ace.Match(config);
// Let's count each line we found a match and print that on our richtextbox2.
int counter = 1;
string line;
System.IO.StreamReader file = new System.IO.StreamReader(ofd.FileName);
while ((line = file.ReadLine()) != null)
{
if (line.Contains(findGroup.Value))
{
foreach (Match findgroup in ace.Matches(config))
{
richTextBox2.AppendText("Line:" + " " + counter.ToString() + " "+ "" + findgroup.Value + "\u2028");
}
}
counter++;
}
}
好的,我想要的输出应该是:
>>>ACLs using OUT are out:
>>>Total Found: 3
Line: 15 access-group myaclname OUT interface outside.12
Line: 16 access-group youraclname OUT interface outside.1
Line: 17 access-group aclname OUT interface outside
现在我拥有的是:
>>>ACLs using OUT are out:
>>>Total Found: 3
Line: 15 access-group myaclname OUT interface outside.12
Line: 15 access-group youraclname OUT interface outside.1
Line: 15 access-group aclname OUT interface outside
我是一名网络工程师,C#不是我的专业领域,虽然我觉得它很吸引人,每天都在了解它,特别是在这里。
答案 0 :(得分:0)
最简单的方法是读取每一行并使计数器保持跟踪。
using (StreamReader r = new StreamReader("test.txt"))
{
int counter = 1;
string line = r.ReadLine();
while (line != null)
{
Console.WriteLine (counter.ToString() + ": " + line);
counter++;
line = r.ReadLine ();
}
}