Bash:读取Localizable.strings的每一行

时间:2013-03-15 06:39:47

标签: xcode bash

在Xcode中,我们有一个Localizable.string文件,我们用它来支持我们的应用程序中的多种语言。我想 拼写检查 Localizable.string文件。 当我使用此脚本时,输出将打印到控制台

cat ~/Desktop/Localizable.strings

但是当我尝试逐行阅读使用此脚本进行拼写检查时,会在控制台上打印出一堆空行。

cat ~/Desktop/Localizable.strings | while read line; do
echo $line
done

这是Localizable.strings文件的样子。它有一个key和一个value。我只想查看Value

"SOME_KEY" = "Spell check this";

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我找不到可用于此的实用程序。我发现的最接近的是/usr/libexec/PlistBuddy(但它不能让你枚举键或值,只能打印已知的键)和Erica Sadun的plutil,但这是为iOS编译的只是而且不是开源。

因此,您似乎需要为此编写一个简单的实用程序:

#import <Foundation/Foundation.h>

int main(int argc, char *argv[])
{
    @autoreleasepool {
        NSString *fname = [NSString stringWithUTF8String:argv[1]];
        NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:fname];
        for (NSString *value in dict.allValues) {
            printf("%s\n", value.UTF8String);
        }
    }

    return 0;
}

调用:./<BINARY> Localizable.strings。这将打印包含字符串的任何有效属性列表文件的所有值,包括.strings个文件。

答案 1 :(得分:0)

这将打印指定Localizable.strings文件的所有值

plutil -p $FILE_PATH | grep '" *=> *"' | while read line; do key=$(echo "$line" | sed -E 's/(.*)=>(.*)/\2/') echo $key done