2013-11-15 18 views

回答

0

使用像其中的一个:

perl -pe 's/ \| /\n/g' 
perl -nE 'say for split/\| /' 
+0

总是使用//作为split的第一个参数(除了'split'''的特殊情况),所以你不要忘记它总是一个正则表达式。你的分裂失败。 – ysth

+0

您需要在两个示例中反斜杠管道。 –

+1

这就是我应得的发布从手机未经测试:-)谢谢你,我编辑。 –

1

一种方法是用一个换行符替换空格和竖线分隔符。

echo "your input" | perl -pe 's/ \| /\n/g' 

您可以在此执行拆分并加入您的字符串。

echo "your input" | perl -ne 'print join("\n", split/\| /, $_)' 

注:我会很安全和使用\s*\|\s*|事后才来匹配多个空格。

+0

您最后的解决方案不会杀死所有空间。它确实太复杂了。 – user2719058

1

既然你问了一个一行,我想你不是试图把这个在现有的Perl脚本,那么为什么不使用这个普通的shell命令:

tr -s '| ' '[\n*]' 

这将第一组中的任何字符序列替换为换行符。独特的语法[\n*]确保它适用于任何符合POSIX的tr。随着GNU或BSD tr,这个简单的语法也应该工作:

tr -s '| ' '\n' 

差不多同样可以用Perl适当进行:

perl -pe 'tr/ |/\n/s' 
相关问题