Perl 中管道字符的分割

发布于 2025-01-02 17:28:34 字数 113 浏览 0 评论 0原文

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

echo "000001d17757274585d28f3e405e75ed

I have a little problem. I want to split a line at every pipe character found using the split operator. Like in this example.

echo "000001d17757274585d28f3e405e75ed

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

夜声 2025-01-09 17:28:34

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

我预计输出为 36
因为 awk 使用分隔符 | 分割返回 36,但我得到 12,就好像分割停在行中的 1 字符处一样。

echo "000001d17757274585d28f3e405e75ed

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

I would expect an ouput of 36
as awk splitting with the delimiter | return 36, but instead I get 12, as if the split stopped at the 1 character in the line.

echo "000001d17757274585d28f3e405e75ed

药祭#氼 2025-01-09 17:28:34
鸵鸟症 2025-01-09 17:28:34
來不及說愛妳 2025-01-09 17:28:34

|||||||||" | \
awk -F"|" '{print NF}'

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

|||||||||" | \
awk -F"|" '{print NF}'

Any idea. I have tried many ways of quoting the |, but without success.
Many thanks by advance.

左耳近心 2025-01-09 17:28:34

根据 split

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

您需要为分割指定负限制才能获取尾随的分割:

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

According to split:

By default, empty leading fields are preserved, and empty trailing ones are deleted.

You need to specify a negative limit to the split to get the trailing ones:

split(/\|/, $data, -1)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文