使用gawk / awk / sed修改java文件(交换java函数参数)

时间:2012-08-04 12:18:25

标签: java sed awk gawk

我有很多包含这样的语句的Java文件:

assertEquals(x, 0);

我想在每个文件中交换2个参数。我怎么能以编程方式做到这一点?

2 个答案:

答案 0 :(得分:7)

sed 's/assertEquals(\([^,]*\), *\([^)]*\));/assertEquals(\2, \1);/g' <input.file >output.file

<强>更好的:

sed 's/assertEquals(\([^,]*\),[ ]\{0,1\}\([^)]*\));/assertEquals(\2, \1);/g' <input.file >output.file

<强>解释

  • s/"pattern"/"substitution"/g // s =&gt;替代,g =&gt;全线
  • \(...\)捕获子模式。这可以通过\number来引用。所以逻辑是s/assertEquals("pattern1","??whitespace??""pattern2");/assertEquals("pattern2", "pattern1");/g
  • [ ]\{0,1\}匹配逗号后的可能空格(0或1出现) - [ ]?对我不起作用?

答案 1 :(得分:1)

sed -i '/[(][ ]*\([^,]*\)[ ]*,[ ]*\([^)]*\)[ ]*[)]/ s::(\2,\1):' FILE
  • 消除参数之间的空格
  • 交换所有具有2个参数的函数调用的参数