2

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

输入:

AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA

输出:

AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA
4

3 回答 3

3

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

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

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

echo "your input" | perl -ne 'print join("\n", split /\s*\|\s*/, $_)'
于 2013-11-15T05:49:31.517 回答
0

由于您要求使用单线,我想您并没有尝试将其放入现有的 perl 脚本中,所以为什么不为此使用普通的 shell 命令:

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

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

tr -s '| ' '\n'

使用 Perl 也可以做到这一点:

perl -pe 'tr/ |/\n/s'
于 2013-11-15T18:52:54.863 回答
-1

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

perl -pe 's/ \| /\n/g'
perl -nE 'say for split / \| /'
于 2013-11-15T05:07:31.483 回答