首页 > 解决方案 > 如何选择多个不相邻的列?

问题描述

我有一个数据集,我试图从中选择前 10 列和后 27 列(从第 125 列开始到最后的第 152 列)。

awk 'BEGIN{FS="\t"} { printf $1,$2,$3,$4,$5,$6,$7,$8,$9,$10; for(i=125; i<=NF; ++i) printf $i""FS; print ""}' Bigdata.txt > Smalldata.txt 

通过尝试此代码,它为我提供了前 12 列(及其数据)以及原始大数据文件中所有 152 列的所有标题。如何选择 1-10 和 125-152 列进入新文件?我是 linux 新手,任何指导将不胜感激。

标签: unixawk

解决方案


cut如果您已经知道列数是此任务的工具,请不要重新发明轮子。

$ cut -f1-10,125-152 bigdata

tab 是默认的分隔符。

如果您不知道列数,awk请前来救援!

$ cut -f1-10,$(awk '{print NF-27"-"NF; exit}' file) file

awk将通过读取文件的第一行来打印结束范围。


推荐阅读