如何使用perl one liner将一行分成多行。
输入:
AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA
输出:
AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA
答案 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 / \| /'