sed的perl替代品以拆分多个|

sha*_*avi 1 regex unix perl

我能够在sed命令中完成此操作,但无法在perl中运行它。想要在靠近但没有任何空格或字母数字的管道字符之间添加空格。

输入==> a | 123 | ## ||||
预期输出==> a | 123 | ## | | | |

sed命令可以正常工作:

echo "a|123|##||||" | sed 's/\([^[:blank:][:alnum:]]\)|/\1 | /g'
Run Code Online (Sandbox Code Playgroud)

以上命令的输出==> a|123|## | | | |

在perl中,我无法正常运行

echo "a|123|##||||" | perl -pe 's/\([^[:blank:][:alnum:]]\)|/\1 | /g'
Run Code Online (Sandbox Code Playgroud)

与上述命令的输出

| 一个| | | 1 | 2 | 3 | | | #| #| | | | | | | | | 

zdi*_*dim 6

仅在|彼此相邻的空间之间添加空间

echo "a|123|##||||" | perl -pe's/\|(?=\|)/\| /g'
Run Code Online (Sandbox Code Playgroud)

为了能够检测到连续(且重叠!)对,并且使用多于两个的对,我使用了前瞻性|:仅消耗了一场比赛中的第一对,因此第二场比赛留在了下一场比赛中,以防万一之后又出现了(再次声明为先行)。