如何在bash中分隔一栏的字段?

时间:2018-10-05 04:36:45

标签: perl

我有以下以制表符分隔的文件:

1 1 0 0 2 -9 BB A A B A B ...
2 2 0 0 2 -9 AA B B A B A ...
3 3 0 0 2 -9 AB B A B A B ...

如您所见,第7列中的基因型尚未分离。我需要以下制表符分隔的文件:

1 1 0 0 2 -9 B B A A B A B ...
2 2 0 0 2 -9 A A B B A B A ...
3 3 0 0 2 -9 A B B A B A B ...

我尝试了以下命令:

perl -ne '
   ($id, $tmp) = split( / /, $_, 2 );
   $tmp =~ s/ //g;
   print "$id ";
   print join(" ", split( //, $tmp ) );
' ped1 > ped2

有人可以解决吗?

1 个答案:

答案 0 :(得分:0)

如果我的评论中的问题的答案为是,请尝试以下操作:

awk -v FS="\t" -v OFS="\t" '{ sub(/^./, "&\t", $7); print }' ped1 > ped2

编辑:

Perl版本:

perl -F"\t" -lanE 'BEGIN { $, = "\t" } $F[6] =~ s/^(.)/$1\t/; say @F' ped1 > ped2