如何将字符串附加到矩阵文件的第一列?

如何将字符串附加到矩阵文件的第一列?

我有一个矩阵文件如下。第一列是名单。我想添加_i1到每个名称的末尾。

        A1A A1B A1C A1D A1E 
TR6764_c0_g2    0.00    0.02    0.00    0.00    0.00   
TR25644_c0_g1   0.00    0.00    0.00    0.00    0.00   
TR4897_c0_g1    58.50   177.26  130.35  8.52    102.66  
TR900_c0_g2     0.00    0.00    0.00    0.00    0.00    

想要的结果是这样的:

   A1A A1B A1C A1D A1E
TR6764_c0_g2_i1    0.00    0.02    0.00    0.00    0.00   
TR25644_c0_g1_i1   0.00    0.00    0.00    0.00    0.00   
TR4897_c0_g1_i1    58.50   177.26  130.35  8.52    102.66  
TR900_c0_g2_i1     0.00    0.00    0.00    0.00    0.00 

我怎样才能做到这一点?

答案1

我会用awk

$ awk 'NR>1{$1=$1"_i1"}1;' test.txt 
        A1A A1B A1C A1D A1E 
TR6764_c0_g2_i1 0.00 0.02 0.00 0.00 0.00
TR25644_c0_g1_i1 0.00 0.00 0.00 0.00 0.00
TR4897_c0_g1_i1 58.50 177.26 130.35 8.52 102.66
TR900_c0_g2_i1 0.00 0.00 0.00 0.00 0.00

或者,如果您需要保持空格不变,perl:

$ perl -pe 's/\s/_i1$&/ if $.>1' test.txt 
        A1A A1B A1C A1D A1E 
TR6764_c0_g2_i1    0.00    0.02    0.00    0.00    0.00   
TR25644_c0_g1_i1   0.00    0.00    0.00    0.00    0.00   
TR4897_c0_g1_i1    58.50   177.26  130.35  8.52    102.66  
TR900_c0_g2_i1     0.00    0.00    0.00    0.00    0.00    

答案2

我想我会匹配第一个空格:

 sed 's/\s/_i1\t/' test.txt

相关内容