如何在bash中只保留一些数字?

我有一个包含基因型的大文件。 基本上,一行是一个位置(或一个SNP)和一列(所有的数字连接在一起形成一个巨大的数字,但一列中的一个数字alignment在一个列中是一个人)。 96人)。 这里是一个例子:

921212922222222212292222229222221222211222222222222219929222292222922229919922222222222222292292 929111221111111221191211222912222221111210229921222129929222291221921219929992122122222211292299 292222922212222122292222222222921122222222921219222222912222299199922222912222222222221222292229 222222221122122922122222112212212221222122221922999229222229222212992221222222221222222222222212 222222222292212221291112192222122121922122222122229212222221212212922221222122122912222922222111 222222921222222922292222122222922222229222122291299122922222229222922229229222219222292222122222 

我只想在这里保留一些“列”,但由于它是一个数字,所以我需要剪切它,把它放在不同的列中,并将所有的东西连接成相同的格式,但是需要2列。

例如,如果我select列1和3,最终结果应该是:

 91 99 22 22 22 22 

我试过这个(上面的数据是在output.geno):

 cat ~/Desktop/output.geno| awk '{ print $1 $3}' echo ~/Desktop/output.geno | grep -o "" 

如果你想玩这个玩具数据集:

 echo "921212922222222212292222229222221222211222222222222219929222292222922229919922222222222222292292 929111221111111221191211222912222221111210229921222129929222291221921219929992122122222211292299 292222922212222122292222222222921122222222921219222222912222299199922222912222222222221222292229 222222221122122922122222112212212221222122221922999229222229222212992221222222221222222222222212 222222222292212221291112192222122121922122222122229212222221212212922221222122122912222922222111 222222921222222922292222122222922222229222122291299122922222229222922229229222219222292222122222" > ~/Desktop/output.geno 

你可以使用cut

 cut -c 1,3 output.geno 

得到:

 91 99 22 22 22 22 

尝试:

 awk '{print $1$3}' FS= output.geno 

相当于:

 awk 'BEGIN{FS=""}{print $1$3}' output.geno 

您需要将FS (字段分隔符)设置为空

@M。 Beausoleil,@Try(虽然没有测试过):

 awk '{print substr($0,1,1) substr($0,3,1)}' Input_file 

很简单,拿出第一位和第三位数字并打印出来。