如何使用 perl 一行使用正则表达式将一行拆分为多行



如何使用Perl单行将一行拆分为多行?

输入:

AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA

输出:

AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA

一种方法是用换行符替换空格和管道分隔符。

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

您可以在此处执行拆分并连接字符串。

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

既然你要求一个单行,我想你不是想把它放在现有的perl脚本中,所以为什么不为此使用一个普通的shell命令:

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

这会将第一集中的任何字符序列替换为换行符。特殊的语法[n*]确保它适用于任何符合 POSIX tr。对于GNU或BSD tr,这种更简单的语法也应该可以工作:

tr -s '| ' 'n'

Perl 本身也可以做同样的事情:

perl -pe 'tr/ |/n/s'

使用类似其中之一的东西:

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

最新更新