Filter 超越比较4:如何仅显示包含特定字符串的行?
我试图比较包含事务列表的两个日志文件。这些事务的字段在行本身中定义。例如:Filter 超越比较4:如何仅显示包含特定字符串的行?,filter,hide,show,beyondcompare4,Filter,Hide,Show,Beyondcompare4,我试图比较包含事务列表的两个日志文件。这些事务的字段在行本身中定义。例如: transactionID: 1, transactionType: 6, transactionData: 123456 transactionID: 2, transactionType: 6, transactionData: 654321 在一个日志文件中,transactionType 6事务可能连续出现,而在另一个文件中,它们可能与其他事务类型交错出现。因此,尽管transactionID可
transactionID: 1, transactionType: 6, transactionData: 123456
transactionID: 2, transactionType: 6, transactionData: 654321
在一个日志文件中,transactionType 6事务可能连续出现,而在另一个文件中,它们可能与其他事务类型交错出现。因此,尽管transactionID可能有所不同,但它们的顺序仍然相同,并且包含相同的数据
如何筛选或仅显示包含字符串“transactionType:6”的两个文件中的行?这将过滤掉所有其他事务,只允许我查看类型为6的事务
谢谢。您的问题在Beyond Compare 4.1.1(当前版本)中不可能实现 最接近您所描述的内容是只显示与特定字符串匹配的文本中的差异 使用说明定义与“.transactionType:6.”匹配的正则表达式语法元素
定义语法元素后,单击规则工具栏按钮(裁判图标)。在“重要性”选项卡中,选中新语法元素旁边的复选框,取消选中所有其他语法元素以使其不重要。这只会突出显示与您定义的语法元素匹配的行之间的差异。以下是我在BC4中实现所需行为的方法 BC支持在打开文件进行比较时运行“预处理器”应用程序。 所以我做了一个简单的可执行文件,它有3个参数(argv[]):
#include <iostream>
#include <fstream>
#include <list>
using namespace std;
int main(int argc, const char * argv[])
{
ifstream inputFile (argv[1]);
ifstream substringFile (argv[3]);
ofstream outputFile;
outputFile.open(argv[2]);
//build the list of substrings from the substring input file
list<string> substringList;
string line;
//TODO: make this safer
while (getline(substringFile, line))
{
substringList.push_back(line);
}
//for each substring in the list
for (list<string>::const_iterator iter = substringList.begin(); iter != substringList.end(); iter++)
{
if (inputFile.is_open())
{
//for all the lines in the file
while (getline(inputFile, line))
{
//Find the current substring
if (line.find(*iter) != string::npos)
{
outputFile << line << "\n";
}
}
}
//go back to the beginning of the file
inputFile.clear();
inputFile.seekg(0, ios::beg);
}
inputFile.close();
outputFile.close();
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,const char*argv[]
{
ifstream输入文件(argv[1]);
ifstream子字符串文件(argv[3]);
流输出文件;
outputFile.open(argv[2]);
//从子字符串输入文件生成子字符串列表
列表子字符串列表;
弦线;
//TODO:让这更安全
while(getline(子字符串文件,行))
{
子字符串列表。推回(行);
}
//对于列表中的每个子字符串
对于(list::const_迭代器iter=substringList.begin();iter!=substringList.end();iter++)
{
if(inputFile.is_open())
{
//对于文件中的所有行
while(getline(inputFile,line))
{
//查找当前子字符串
if(line.find(*iter)!=string::npos)
{
outputFile谢谢你的帖子。它教会了我一些东西,但不幸的是不能满足我的需要。我需要所有不包含字符串(或不匹配正则表达式)的行隐藏,并且仅显示包含匹配表达式的行。您描述的是如何仅比较包含匹配表达式的行。问题是相同类型的事务可能在两个文件中的不同时间出现(未对齐),它们甚至可能与其他事务交错。因此,我只希望能够查看和比较特定类型的事务。Beyond compare不支持筛选,只显示包含特定字符串的行。您最好只显示包含特定字符串的差异。谢谢Chris。我猜怎么着“我想要”不受支持。我希望在将来的版本中添加此功能。如果您编辑您的答案,使其包含我要求的内容不可能,我会将其标记为已接受的解决方案。