【发布时间】:2013-12-11 20:30:16
【问题描述】:
我发誓,这几天我要去学习sed。
现在,问题来了:
我正在尝试将正则表达式的捕获组从大写下划线 (MY_EXAMPLE) 替换为驼峰式 (myExample)。
不幸的是,我的 sed 知识非常有限,这是我目前所掌握的:
cat Labels.h | gsed -E 's/NSLocalizedString\(\@"(.*)", nil\)/\L\1/'
这会将 MY_EXAMPLE 转换为 my_example,关闭,有点,但不完全。所以,我现在面临的问题是,因为骆驼案例替换本身就是一个正则表达式,我如何将该正则表达式应用于捕获组(\1)?用 grep 或 awk 更容易吗?
更新:
为了更清楚,我所关注的是每个这样的结构:
NSLocalizedString(@"SOMETHING_HERE", nil)、NSLocalizedString(@"SOMETHING_ELSE_HERE", nil) 等
成为
somethingHere、somethingElseHere 等
现在我得到了:
something_here、something_else_here 等
【问题讨论】:
-
sed 只有 3 个您应该使用的命令 - s、g 和 p(带 -n),因此非常容易学习。如果您发现自己正在考虑使用任何其他构造,请帮自己一个忙,使用 awk。
-
您是要提取这些字符串还是就地更改它们?我的意思是你想要的输出真的只是
someThingHere还是实际上是NSLocalizedString(@"someThingHere", nil)?脚本如何判断“SOMETHING”应该变成“someThing”(即大写字母“T”中间词)? -
@EdMorton ups,这是一个错字,已更新,抱歉!
-
而输出真的只是那些选定的字符串而不是整行?
-
鉴于您的明确要求,请查看我的更新答案。