好的,所以我在这个文件中有大约 1000 个重复的短语,所以手动执行此操作不是一种选择。请注意,这些是短语,而不是行或单词,每个“短语”大约有 10 行长。
我试图摆脱重复的短语,但唯一使“项目”(或短语)重复的是位置语法。例如:
class Item0
{
position[]={4347.6001,0,3214.6399};
azimut=128.81599;
special="NONE";
id=1;
side="EMPTY";
vehicle="Land_fortified_nest_small";
lock="UNLOCKED";
skill=0.2;
init="this setPos [4347.6, 3214.64, 0]; this setDir 128.816;";
};
class Item1
{
position[]={4347.6001,0,3214.6399};
azimut=128.81599;
special="NONE";
id=2;
side="EMPTY";
vehicle="Land_fortified_nest_small";
lock="UNLOCKED";
skill=0.2;
init="this setPos [4347.6, 3214.64, 0]; this setDir 128.816;";
};
现在前面两个词组是重复的,但是 ID 和 ITEM# 是不同的,所以识别重复词组的唯一方法是通过 position[]={} 参数。当 2 个短语具有相同的位置时,这两个短语是重复的,无论 ID 或 ITEM#。
所以我的目标是使用某种类型的代码、脚本、程序或正则表达式来删除所有重复的短语,但不影响第一个重复的短语。因此,如果存在三个重复,则留下一个短语,但删除两个短语。我该怎么做呢?
所需输入/输出的示例:
输入:
class Item0
{
position[]={4347.6001,0,3214.6399};
azimut=128.81599;
special="NONE";
id=1;
side="EMPTY";
vehicle="Land_fortified_nest_small";
lock="UNLOCKED";
skill=0.2;
init="this setPos [4347.6, 3214.64, 0]; this setDir 128.816;";
};
class Item1
{
position[]={4682.6001,0,3847.6399};
azimut=128.81599;
special="NONE";
id=2;
side="EMPTY";
vehicle="Land_fortified_nest_small";
lock="UNLOCKED";
skill=0.2;
init="this setPos [4682.6, 3847.64, 0]; this setDir 128.816;";
};
class Item2
{
position[]={4347.6001,0,3214.6399};
azimut=128.81599;
special="NONE";
id=3;
side="EMPTY";
vehicle="Land_fortified_nest_small";
lock="UNLOCKED";
skill=0.2;
init="this setPos [4347.6, 3214.64, 0]; this setDir 128.816;";
};
输出:
class Item0
{
position[]={4347.6001,0,3214.6399};
azimut=128.81599;
special="NONE";
id=1;
side="EMPTY";
vehicle="Land_fortified_nest_small";
lock="UNLOCKED";
skill=0.2;
init="this setPos [4347.6, 3214.64, 0]; this setDir 128.816;";
};
class Item1
{
position[]={4682.6001,0,3847.6399};
azimut=128.81599;
special="NONE";
id=2;
side="EMPTY";
vehicle="Land_fortified_nest_small";
lock="UNLOCKED";
skill=0.2;
init="this setPos [4682.6, 3847.64, 0]; this setDir 128.816;";
};