Automation 交换记事本中的某些行++;自动地
我得到了一个很大的.SQF文件,它是由ARMA2(游戏)的3d编辑器生成的。 该编辑器在很多方面都有缺陷,但这是添加自定义地图内容的唯一“简单”方法。一个很好的例子就是这个问题: 编辑器将某些行写入所谓的.SQF文件。每个物体都由几条线组成。问题是,行的顺序并不总是以正确的顺序写入。这会导致对象生成不正确。当有超过1000+个对象,因此超过10000+条线时,将每个对象的线按正确的顺序排列将成为一项艰巨的任务 以下是文件中几个对象的示例:Automation 交换记事本中的某些行++;自动地,automation,notepad++,swap,lines,sqf,Automation,Notepad++,Swap,Lines,Sqf,我得到了一个很大的.SQF文件,它是由ARMA2(游戏)的3d编辑器生成的。 该编辑器在很多方面都有缺陷,但这是添加自定义地图内容的唯一“简单”方法。一个很好的例子就是这个问题: 编辑器将某些行写入所谓的.SQF文件。每个物体都由几条线组成。问题是,行的顺序并不总是以正确的顺序写入。这会导致对象生成不正确。当有超过1000+个对象,因此超过10000+条线时,将每个对象的线按正确的顺序排列将成为一项艰巨的任务 以下是文件中几个对象的示例: _vehicle_372 = objNull; if (
_vehicle_372 = objNull;
if (true) then
{
_this = createVehicle ["MAP_asf2_1_1000", [13661.608, 2976.1057, 4.9591064e-005], [], 0, "CAN_COLLIDE"];
_vehicle_372 = _this;
_this setDir 40.844734;
_this setPos [13661.608, 2976.1057, 4.9591064e-005];
};
_vehicle_378 = objNull;
if (true) then
{
_this = createVehicle ["MAP_dum_mesto2", [13689.696, 2863.1313, 0.17608854], [], 0, "CAN_COLLIDE"];
_vehicle_378 = _this;
_this setDir -30.116863;
_this setVectorUp [0, 0, 1];
_this setPos [13689.696, 2863.1313, 0.17608854];
};
_vehicle_380 = objNull;
if (true) then
{
_this = createVehicle ["MAP_dum_mesto_in", [13686.867, 2907.3464, -0.009554117], [], 0, "CAN_COLLIDE"];
_vehicle_380 = _this;
_this setDir -63.79903;
_this setPos [13686.867, 2907.3464, -0.009554117];
};
_vehicle_384 = objNull;
if (true) then
{
_this = createVehicle ["MAP_HouseBlock_B1", [13722.756, 2839.5999, 0.29589382], [], 0, "CAN_COLLIDE"];
_vehicle_384 = _this;
_this setDir -216.63187;
_this setVectorUp [0, 0, 1];
_this setPos [13722.756, 2839.5999, 0.29589382];
};
我想交换的行是:
_this setVectorUp [0, 0, 1];
与:
setvectorup行值是一致的,但setPos每次都包含不同的坐标。(只有“_thissetpos”保持不变)
记事本++中是否有一种方法可以自动将所有“\u this setvectorup”行与“\u this setPos”行交换?假设这两行相邻,则可以通过在记事本++中进行搜索和替换来交换它们。将Find what设置为
^([\t]*\u this setVectorUp.*)\r\n([\t]*\u this setPos.*)$
并将替换为\2\r\n\1
。确保选择了正则表达式,并且未选择不匹配换行符
^
和$
匹配第一行的开头和第二行的结尾,\r\n
匹配它们之间的换行符。[\t]*
匹配行中的前导空格。(使用[\t]*
而不是\s*
向人类读者明确CRs和LFs被排除在外。)*
匹配不包含换行符的字符序列。因此,[\t]*\u这个setVectorUp.*
匹配其中一行,同样匹配另一行。包含在(
和)
中会将匹配的行记住为捕获的文本
替换文本反转两个捕获行的顺序,并插入换行符序列
这个答案还假设这两个项目正好是两行。如果项目被拆分为多行,或者存在其他项目,则可能无法交换某些项目,或者交换可能会重新排序错误的项目。请将您的问题减少到您面临的最小问题,这样会更容易帮助您,如果您在windows上安装了linux或cygwin,您可以使用“sort”和“uniq”实用程序删除重复的行或从同一来源收集行(假设它们的来源在行的开头),我的文章中只有一个问题,它在底部说明。它很短。正文的其余部分只是解释我面临的问题。如果你不能帮我解决这个问题,那么请不要费心写评论。这完全符合我的要求,并且给了我一些关于正则表达式的新见解。谢谢!
544
4
-1269
770
4
325
tp@p[score_money_min=10000000,team=default] 96 4 -397
scoreboard teams join VIP @p[r=5]
scoreboard players remove @p money 10000000
23.23.76.109:25565
544
4
-1269
770
4
325
tp@p[score_money_min=10000000,team=default] 96 4 -397
scoreboard teams join VIP @p[r=5]
scoreboard players remove @p money 10000000
23.23.76.109:25565