如何使用perl one liner将行分割成多行。如何使用Perl的一个班轮将一行分成多个使用正则表达式?
输入:
AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA
输出:
AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA
如何使用perl one liner将行分割成多行。如何使用Perl的一个班轮将一行分成多个使用正则表达式?
输入:
AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA
输出:
AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA
使用像其中的一个:
perl -pe 's/ \| /\n/g'
perl -nE 'say for split/\| /'
总是使用//作为split的第一个参数(除了'split'''的特殊情况),所以你不要忘记它总是一个正则表达式。你的分裂失败。 – ysth
您需要在两个示例中反斜杠管道。 –
这就是我应得的发布从手机未经测试:-)谢谢你,我编辑。 –
一种方法是用一个换行符替换空格和竖线分隔符。
echo "your input" | perl -pe 's/ \| /\n/g'
您可以在此执行拆分并加入您的字符串。
echo "your input" | perl -ne 'print join("\n", split/\| /, $_)'
注:我会很安全和使用\s*\|\s*
|
事后才来匹配多个空格。
您最后的解决方案不会杀死所有空间。它确实太复杂了。 – user2719058
既然你问了一个一行,我想你不是试图把这个在现有的Perl脚本,那么为什么不使用这个普通的shell命令:
tr -s '| ' '[\n*]'
这将第一组中的任何字符序列替换为换行符。独特的语法[\n*]
确保它适用于任何符合POSIX的tr
。随着GNU或BSD tr
,这个简单的语法也应该工作:
tr -s '| ' '\n'
差不多同样可以用Perl适当进行:
perl -pe 'tr/ |/\n/s'
我不知道我理解的问题。你只想用换行符替换竖线字符吗?即。 'S/\ |/\ n/g'? –