我有一个xml文件,其中包含以下行:
android:background="@drawable/WhiteButtonSelector"
我需要用下划线和小写字符替换大写字母。 例如,上面的示例字符串必须是:
android:background="@drawable/white_button_selector"
只能替换双引号中的文字。没有drawable
的行必须保持不变。
答案 0 :(得分:1)
sed '/drawable/{s/"[^"]*"/\n&/g;h;s/[^"\n]*\(\n"[^"]*"\)[^"\n]*/\1/g;s/[A-Z]/_/g;H;g;:a;s/\n"[^"]*"\(.*\n\)\n\("[^"]*"\)/\2\1/;ta;s/\n//}' file
***在OS X中,可以使用gsed
brew install gnu-sed
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed -r '/drawable/{h;s/\b[A-Z]/\l&/g;s/\B[A-Z]/_\l&/g;G;s/.*(".*").*\n(.*)".*"/\2\1/}' file
将流程限制在其中包含drawable
的行。
制作该行的副本,然后在单词的开头用大写和大写替换大写和大写字母的大写。
将原始行与已处理行组合,并通过替换构成一个新行。
N.B。这期望每行一个这样的变量。