-2

我正在尝试使用 perl 在表格文件中删除三列。

输入文件:

A B C D

预期/新文件:

A B C

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

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

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

谢谢

4

4 回答 4

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
于 2013-10-02T09:14:45.213 回答
1

这对你有用吗:

 perl.exe -na -e "print qq{@F[0..2]\n}" < input > newfile
于 2013-10-02T09:08:24.963 回答
1
perl -lane "pop @F; print qq(@F)" input
于 2013-10-02T10:53:57.217 回答
0

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

perl -lne "print s/.+\K\s+\S$//r" inFile
于 2013-10-02T17:49:46.057 回答