我正在尝试重新格式化一些代码,特别是条件块,从在行尾使用逻辑运算符到行首,如下所示:
if ($arg == true ||
$arg != null &&
$arg != 42
) {...}
至
if ($arg == true
|| $arg != null
&& $arg != 42
) {...}
sed
证明是不够的,所以我正在尝试perl
,例如:
perl -i'' -pe 's/ (&&|\|\|)(\s+)/$2$1 /gs' $file
但是,我得到的结果是不正确的:
if ($arg == true
|| $arg != null
&& $arg != 42
) {...}
似乎(\s+)
只捕获一个字符,所有剩余的空间都留在原来的位置。我尝试过的变体也失败了。
我究竟做错了什么?