拆分perl中的管道字符

时间:2012-02-06 14:50:36

标签: perl split awk

我有点问题。我想在使用split运算符找到的每个管道字符处拆分一行。就像在这个例子中。

echo "000001d17757274585d28f3e405e75ed|||||||||||1||||||||||||||||||||||||" | \
perl -ane '$data = $_ ; chop $data ; @d = split(/\|/ , $data) ; print $#d+1,"\n" ;'

我预计会有36的输出 当awk与分隔符|分开时返回36,但我得到12,就好像分割停在了行中的1字符一样。

echo "000001d17757274585d28f3e405e75ed|||||||||||1|||||||||||||||||||||||||||||||||||||||" | \ 
awk -F"|" '{print NF}'

任何想法。我尝试过多种引用|的方法,但没有成功。 非常感谢提前。

1 个答案:

答案 0 :(得分:16)

根据split

  

默认情况下,会保留空的前导字段,并删除空的尾随字段

您需要为拆分指定一个负限制以获得结尾部分:

split(/\|/, $data, -1)