2016-06-21 38 views
1

有没有办法将testThatMy转换为thatMy使用终端?终端文件替换testA与

这是我现在有:

sed -i 's/test//g' MyJavaFile.java

唯一缺少的是将字符转换test后现在为小写。

也由于某种原因引用一个正则表达式变量似乎不工作。

sed -i 's/test([A-Z]{1})/\1/g' MyJavaFile.java

回答

1

您可以使用下面的GNU sed命令:

sed -r 's/test([[:upper:]])([^[:space:]]*)/\L\1\2/g' file.java 

对于就地编辑你需要传递-i,但我会先测试命令。

模式说明:

  • -r启用扩展POSIX正则表达式。
  • [[:upper:]]相匹配的大写字符
  • [^[:space:]]*匹配的零个或多个非空格字符

代用说明:

  • \L变换以下表达式为大写。 \1是内容第一捕获组。 \2是第二个捕获组的内容。
+0

谢谢。虽然我不得不把它改成''s/test(([[:upper:]])[^ [:space:]] *)/ \ L \ 1/g'' – Niklas

+0

呃我的错!我改变了我脑海中的想法。 – hek2mgl