使用命令行替换localizable.strings文件(ios文件)中的字符串

时间:2017-06-14 15:34:55

标签: ios bash perl awk sed

我必须在文件Localizable.strings(iOS文件)中的所有位置替换字符串。

请下载此文件here

例如:我需要将“terms”替换为“xxxx”

我尝试了所有可能性:


perl -ps 's/terms/xxxx/g' localizable.strings 

sed -i "" "s/terms/xxxx/g' localizable.strings

cat localizable.strings | awk '{gsub(/terms/,"xxxx")}1'

我认为这个localizable.strings文件包含“unicode”字符,所以我添加:

LANG=C LC_ALL=C

在perl,sed和awk之前。但它不起作用。

2 个答案:

答案 0 :(得分:1)

以下是您文件的内容:

00000000: 0a2f 002a 0020 006c 006f 0063 006f 003a  ./.*. .l.o.c.o.:
00000010: 0035 0039 0034 0031 0030 0066 0039 0031  .5.9.4.1.0.f.9.1
00000020: 0035 0032 0065 0031 0061 0031 0030 0062  .5.2.e.1.a.1.0.b
00000030: 0036 0036 0038 0062 0034 0035 0036 0064  .6.6.8.b.4.5.6.d
00000040: 0020 002a 002f 000a 0022 0074 0065 0072  . .*./...".t.e.r
00000050: 006d 0073 005f 0061 006e 0064 005f 0063  .m.s._.a.n.d._.c
00000060: 006f 006e 0064 0069 0074 0069 006f 006e  .o.n.d.i.t.i.o.n
00000070: 0073 005f 0061 0063 0063 0065 0070 0074  .s._.a.c.c.e.p.t
00000080: 0022 0020 003d 0020 0022 0061 0063 0063  .". .=. .".a.c.c
00000090: 0065 0070 0074 0065 0072 0022 003b 000a  .e.p.t.e.r.".;..

documentation注释:

  

注意:建议您使用UTF-8编码保存字符串文件,这是标准字符串文件的默认编码。 Xcode会在将字符串文件复制到产品时自动将UTF-8中的字符串文件转码为UTF-16。 (强调我的)

也就是说,您正在处理以UTF-16编码的文件。您需要解码然后进行替换。或者,您可以在原始文件上进行替换,然后再将其添加到Xcode中。

  

我尝试了所有可能性。

我不这么认为。

答案 1 :(得分:-1)

  

我尝试了所有可能性:

我认为你没有,是吗?

您是否尝试阅读Perl's command line options上的文档?

  • -e:定义您要运行的代码
  • -p:遍历输入文件,运行代码并在循环的每次迭代中打印输出
  • -i:将更改写回原始文件(更好的是,-i.bak也会为您提供备份文件)

因此,更新文件的基本方法是:

perl -p -i.bak -e's/terms/xxxxx/g' localizable.strings