unix - 如何选择多个不相邻的列?
问题描述
我有一个数据集,我试图从中选择前 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 新手,任何指导将不胜感激。
解决方案
cut
如果您已经知道列数是此任务的工具,请不要重新发明轮子。
$ cut -f1-10,125-152 bigdata
tab 是默认的分隔符。
如果您不知道列数,awk
请前来救援!
$ cut -f1-10,$(awk '{print NF-27"-"NF; exit}' file) file
awk
将通过读取文件的第一行来打印结束范围。
推荐阅读
- react-native - 反应原生样式表对象不是对象
- flutter - 尽管应用程序正确,但颤动的手机无法访问互联网
- api - 使用 Lambda 调用托管在 AWS EC2 上的 ASP.Net API
- spss - 用于 csv 到 .sav 的 PHP 转换器
- r - 无效的树状图输入(分层聚类)
- git - 尽管远程来源正确,请更新您的 Git 远程警告?
- asp.net - 如何通过托管在另一台服务器上的 Web 服务的 web.config 访问服务器驱动器
- java - 如何找到非ASCII字符串中字素的频率?
- css - Flexbox:如何使 2 列(有 2 个子项)+ 1 列标记看起来像 3 列标记?
- python - Dockerfile 多阶段 Python 诗歌 - 安装