从文本文件中删除某些列

时间:2014-03-14 10:31:04

标签: macos bash shell sed awk

我有一个看起来像这样的文本文件:

A   B   C   A   B   C   A   B   C   A   B
G   T   C   A   G   T   C   A   G   T   C
A   B   C   A   B   C   A   B   C   A   B
A   B   C   A   B   C   A   B   C   A   B
A   D   E   A   B   D   E   A   B   D   E
A   B   C   A   B   C   A   B   C   A   B
C   B   D   G   C   B   D   G   C   B   D

有没有办法只提取某些列并保持其他列完好无损?

例如,仅删除第2列和第5列:

A   C   A   C   A   B   C   A   B
G   C   A   T   C   A   G   T   C
A   C   A   C   A   B   C   A   B
A   C   A   C   A   B   C   A   B
A   E   A   D   E   A   B   D   E
A   C   A   C   A   B   C   A   B
C   D   G   B   D   G   C   B   D

提前致谢。

更新:

使用awk找到了这个答案,但这提取了整个“块”列,我只想提取一些。

用于提取第3列到第5列的awk:

awk -F 'FS' 'BEGIN{FS="\t"}{for (i=1; i<=NF-1; i++) if(i<3 || i>5) {printf $i FS};{print $NF}}' input.txt

1 个答案:

答案 0 :(得分:0)

在你的情况下,你可以做

cat your_file |cut -d ' ' --complement -s -f2,5

其中&#39; &#39;是分隔符(在您的情况下是空格)