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

时间:2013-11-15 04:43:32

标签: perl

如何使用perl one liner将一行分成多行。

输入:

AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA

输出:

AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA

3 个答案:

答案 0 :(得分:2)

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

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

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

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

注意:我会安全并使用\s*\|\s*匹配|之前和之后的多个空格。

答案 1 :(得分:1)

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

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

这会将第一组中的任何字符序列替换为换行符。特殊语法[\n*]确保这适用于任何符合POSIX的tr。使用GNU或BSD tr,这个更简单的语法也应该有效:

tr -s '| ' '\n'

与Perl本身完全相同:

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

答案 2 :(得分:0)

使用其中一种:

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