我有很多的含有這樣的語句Java文件:修改使用java文件GAWK/AWK/SED(換Java函數參數)
assertEquals(x, 0);
我想交換兩個參數在每一個文件。我怎麼能以編程的方式做到這一點?
我有很多的含有這樣的語句Java文件:修改使用java文件GAWK/AWK/SED(換Java函數參數)
assertEquals(x, 0);
我想交換兩個參數在每一個文件。我怎麼能以編程的方式做到這一點?
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 =>替代,G =>上整行\(...\)
捕獲子模式。這可以通過\number
來提及。所以邏輯是s/assertEquals("pattern1","??whitespace??""pattern2");/assertEquals("pattern2", "pattern1");/g
[ ]\{0,1\}
匹配逗號後的可能空格(0或1次出現) - [ ]?
對我不起作用?sed -i '/[(][ ]*\([^,]*\)[ ]*,[ ]*\([^)]*\)[ ]*[)]/ s::(\2,\1):' FILE
是他們都完全一樣,所有的函數調用的參數,或者他們有不同的變量名稱? – John3136 2012-08-04 12:26:57
不需要awk或sed,你的IDE會爲你做這件事(它幾乎可以肯定支持查找/替換中的正則表達式) – artbristol 2012-08-04 13:29:16
John3136:沒有任何爭論可以是隨機的 artbristol:我在Eclipse可能嗎? – cdupont 2012-08-04 13:35:37