在制表符分隔文件上使用perl删除列

时间:2013-10-02 09:00:06

标签: perl

我正在尝试在列表文件中删除带有perl的三列。

输入文件:

A B C D

预期/新文件:

A B C

我在其他问题中看到如何只删除一列,答案是:

perl.exe -na -e "print qq{$F[3]\n}" < input

我怎样才能重写这个以删除三列?

由于

4 个答案:

答案 0 :(得分:1)

这适合你吗?

 perl.exe -na -e "print qq{@F[0..2]\n}" < input > newfile

答案 1 :(得分:1)

在awk模式下使用perl:

$ cat -T f1
a^Ib^Ic^Id^Ie^If
a^Ib^Ic^Id^Ie^If
a^Ib^Ic^Id^Ie^If

$ perl -F'\t' -lane 'print $F[0],"\t",$F[1],"\t",$F[2]' input
a   b   c
a   b   c
a   b   c

或以空格分隔:

$ perl -F'\t' -lane 'print qq{@F[0..2]}' input
a b c
a b c
a b c

或打印前三列,在awk中以制表符分隔

$ awk 'BEGIN{OFS="\t"}{print $1, $2, $3}' input
a   b   c
a   b   c
a   b   c

答案 2 :(得分:1)

perl -lane "pop @F; print qq(@F)" input

答案 3 :(得分:0)

这是另一个选项(Perl v5.14 +):

perl -lne "print s/.+\K\s+\S$//r" inFile