如何使用 Perl 单行将一行拆分为多行?
输入:
AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA
输出:
AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA
如何使用 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 / \| /'