Perl命令行autosplit vs / /

时间:2014-03-04 22:24:14

标签: perl

我经常使用Perl autosplit而不是在命令行上剪切。我遇到了一个案例,我需要保留很多空白。根据文档,我需要指定的分隔符是/ /,因为像' '之类的东西模仿awk的行为剥离前导空格等。

我的问题是在命令行上指定/ /模式似乎是不可能的。我试着以各种方式引用它,但是在正斜杠上最终会出现分裂:

perl -F'/ /' -lane 'print "@F[3..$#F]"' input.txt

以下按预期方式工作:

perl -lne '@ar = split / /; print "@ar[3..$#ar]"' input.txt

为什么我的autosplit不起作用以及如何修复它?

RHEL 5.9上的Perl 5.8.8。

2 个答案:

答案 0 :(得分:7)

“你不能在模式中放置文字空格”限制的解决方法:

perl -F\\x{20} ...
perl -F\\040   ...

答案 1 :(得分:1)

如果你关心插入空间的数量,那么你需要捕获那些以及数据。我认为相当于split /(\s+)/就是你想要的。

使用类似

的数据文件
  x  x  x

(那是"\x20\x20x" x 3

之类的命令行
perl -MData::Dump -F/(\x20+)/ -anE"dd \@F" data.txt

你得到这个输出

["", "  ", "x", "  ", "x", "  ", "x\n"]

这有帮助吗?

相关问题