如何解析shell中的.m文件?

时间:2014-07-06 08:31:08

标签: ios objective-c linux xcode shell

我需要解析目录及其子目录中所有.m文件的[POEditor localizedStringWithKey:[POEditor localizedStringWithKey:[NSString stringWithFormat:,然后我需要在NSString之间获取" 。 例如:

第一个选项:[POEditor localizedStringWithKey:@"I need this string"];

第二个选项[POEditor localizedStringWithKey:[NSString stringWithFormat:@"I need this string with formate %@", [self someFormatedString]]];

有没有人知道如何解决这个问题?

谢谢大卫

1 个答案:

答案 0 :(得分:1)

我不太确定你想要什么,但看起来这可能是一个很好的起点:

find . -name \*.m -exec grep "\[POEditor localizedStringWithKey:" {} \; | awk -F\" '{print $2}'

用于查找当前目录及以下名称以.m结尾的所有文件,以及包含" POEditor"的行的grep。你想要的字符串。将所有结果传递到awk并使用"作为字段分隔符,并打印每行的字段2。

如果您的grep支持-R(递归搜索)选项,那么您可以使用此功能:

grep -R "\[POEditor localizedStringWithKey:" *.m */*.m | awk -F\" '{print $2}'

如果希望结果在bash数组中,则需要将数组的内容初始化为命令的输出,如下所示:

array=( $(command) )

所以你会使用:

array=($(grep -R "\[POEditor localizedStringWithKey:" *.m */*.m | awk -F\" '{print $2}'))

但是这将拆分空格上的数组元素,而$ {array [0]}将是"我"来自"我需要这个",所以你想在线端分割数组元素,如下所示:

IFS=$'\n' array=($(grep -R "\[POEditor localizedStringWithKey:" *.m */*.m | awk -F\" '{print $2}'))

或同样

IFS=$'\n' array=($(find . -name \*.m -exec grep "\[POEditor localizedStringWithKey:" {} \; | awk -F\" '{print $2}'))

然后你可以像这样访问数组元素:

echo ${array[0]}
I need this string