首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有一定比例的列的Bash -过滤器行

有一定比例的列的Bash -过滤器行
EN

Unix & Linux用户
提问于 2020-01-24 20:30:46
回答 1查看 519关注 0票数 1

所以,我有大量的文件,每个文件有8列和很多行。这是其中一个人的脑袋,举个例子。

代码语言:javascript
复制
ID       Ct       1          2          3          4           5             6
1        0        consensus  -          -          -           -             -
2        0        consensus  -          -          -           -             -
3        0        consensus  consensus  consensus  consensus   consensus     consensus
4        0        consensus  -          consensus  -           -             -
5        0        -          AT         AT         GC          GC            AT
6        0        consensus  -          -          -           consensus     -
7        0        consensus  -          -          -           -             -
8        0        consensus  consensus  consensus  -           consensus     consensus
9        0        consensus  -          -          -           -             -

我想将最后6列至少占5/6的所有行分开。所以ID 3,5和8(第4,6和9行)从我的头上。因此,我希望所有列少于2列的行都有效地使用"-“。

我以前用一个简单的awk脚本就能做到这一点,因为程序计算了第二列占据了多少列--似乎我不能再这样做了。做这件事最好的方法是什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-01-24 22:05:20

会有多远

代码语言:javascript
复制
awk 'gsub(/-/, "&") < 2' file
ID       Ct       1          2          3          4           5             6
3        0        consensus  consensus  consensus  consensus   consensus     consensus
5        0        -          AT         AT         GC          GC            AT
8        0        consensus  consensus  consensus  -           consensus     consensus

抓到你了?请注意,没有说什么,rg。所需的输出--您想要一个单独的输出文件、以输出行为前缀的文件名,还是使用与原始文件类似的名称的新文件?

编辑(在对新文件名进行注释后):

代码语言:javascript
复制
awk 'gsub(/-/, "&") < 2 {print > (FILENAME ".new")}' /path/to/file/*
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/563956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档