我经常使用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。
答案 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"]
这有帮助吗?