次のコマンドを使用して、PHPファイルから文字列または整数の配列キー間の周囲のスペースを削除します。
sed -ri "s/\[ ([0-9]+|(\x27|\x22).*(\x27|\x22)) \]/[\1]/g" file.php
私はすべての基盤を扱ったと思いましたが、同じ行に複数の配列括弧がある場合は失敗するので、次のようになります。
if ( $myarray[ 'id' ] == 7 && $myarray[ 'status' ] == true )
次のようになります。
if ( $myarray['id' ] == 7 && $myarray[ 'status'] == true )
次のように表示する必要があります。
if ( $myarray['id'] == 7 && $myarray['status'] == true )
最初の角かっこセットの右側のスペースと2番目の角かっこセットの左側のスペースを削除します。
ファイル全体の各行の配列括弧の間のすべてのスペースを置き換えるようにこのコマンドをどのように変更しますか?
答え1
問題は、.*
'または'以外のすべての文字と一致する場合に機能します。sed -ri "s/\[ ([0-9]+|(\x27|\x22)[^\x27\x22]*(\x27|\x22)) \]/[\1]/g" file.php
より良い方法は次のとおりです(可能な「または」を考慮)。
sed -ri "s/\[ ([0-9]+|(\x27|\x22)[^\2]*(\2)) \]/[\1]/g" file.php