所以,我有大量的文件,每个文件有8列和很多行。这是其中一个人的脑袋,举个例子。
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脚本就能做到这一点,因为程序计算了第二列占据了多少列--似乎我不能再这样做了。做这件事最好的方法是什么?
发布于 2020-01-24 22:05:20
会有多远
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。所需的输出--您想要一个单独的输出文件、以输出行为前缀的文件名,还是使用与原始文件类似的名称的新文件?
编辑(在对新文件名进行注释后):
awk 'gsub(/-/, "&") < 2 {print > (FILENAME ".new")}' /path/to/file/*https://unix.stackexchange.com/questions/563956
复制相似问题