gpt4 book ai didi

xcode - 在 Xcode 运行脚本 bin/sh 中使用 sed 查找和替换多行

转载 作者:行者123 更新时间:2023-12-04 05:13:31 25 4
gpt4 key购买 nike

我有一个 Cocos2D tmx 文件,它非常像 xml,包括回车符和空格。

我的要求是:

在 Resources/maps_sideScrolling/中的每个 tmx 文件中

查找和之间的所有内容

<tileset firstgid="1"

第一个出现

<layer name="background"

并替换为Resources/maps_sideScrolling/tileProperties.txt的内容

我尝试了以下但没有结果。问题是因为要查找的字符串有多行。

sed -i '' 's{<tileset firstgid="1.*<layer name="background"{Resources/maps_sideScrolling/tileProperties.txt{g' Resources/maps_sideScrolling/*.tmx;

这是我要编辑的 tmx 片段的 pastebin:http://pastebin.com/wr39zj1r

最佳答案

Geek 使用 python 对 TMX map 文件执行此类操作。只是一个可供考虑的选项。

像这样(但迭代目录中的所有文件等),并将其保存为 .sh 文件:

#!/usr/bin/env python

import re

#you'd open a file and read in the tile properties thing
fakeTileProperties = "<tileproperties>1</tileproperties>\r"

f = open( "file1.tmx", "rU")
fo = open( "outputfile.tmx", "wc");

#read source file
s = f.read();

#find what you need
m = re.search("([\W\w]*)(<tileset firstgid=\"1\"[\W\w]*)(<layer name=\"background\"[\W\w]*)", s )

#write out to source file
fo.write(m.group(1))
fo.write(fakeTileProperties)
fo.write(m.group(3));

f.close();
fo.close();

print "done!"

代码在 tile set firstgid="1"之前处理内容,以防万一。

要在 Xcode 4 中使用这样的脚本,请执行以下操作:

  • 将脚本放在项目文件旁边的文件中,将其命名为 myscript.py
  • 使用 chmod +x myscript.py 使脚本文件可执行。
  • 在您的 Xcode 项目中选择项目和目标以及“Build Phases”选项卡,然后创建一个新的“Run Script”构建阶段。
  • 保留/bin/sh 的默认 shell
  • 将以下内容放入脚本字段:$(SOURCE_ROOT)/myscript.py

然后当您进行构建时,您应该会看到 python 脚本被执行。你可以做一个非常简单的测试 python 文件来测试这个(我刚刚做了):

#!/usr/bin/env python

print 'hello from python!'

请注意,运行脚本设置中的设置“在构建日志中显示环境变量”对于获取环境变量(如 SOURCE_ROOT 等)来定位文件非常有帮助。

祝你好运!

关于xcode - 在 Xcode 运行脚本 bin/sh 中使用 sed 查找和替换多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14591375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com