Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在unixshell中使用第一列作为引用将行转换为列_Bash_Unix_Awk - Fatal编程技术网

Bash 在unixshell中使用第一列作为引用将行转换为列

Bash 在unixshell中使用第一列作为引用将行转换为列,bash,unix,awk,Bash,Unix,Awk,我正在尝试转换此数据: EU842263.1.1492 AA.A_1 BB.B_2 CC.C_3 LN612956.1.1401 AA.A_1 BB.B_2 CC.C_3 DD.D_4 EE.E_5 FF.F_6 GU304497.1.1513 AA.A_1 AB905872.1.1334 AA.A_1 BB.B_2 CC.C_3 DD.D_4 为此: EU842263.1.1492 AA.A_1 EU842263.1.1492 BB.B_2 EU842263.1.1492 CC.C_3 LN

我正在尝试转换此数据:

EU842263.1.1492 AA.A_1 BB.B_2 CC.C_3
LN612956.1.1401 AA.A_1 BB.B_2 CC.C_3 DD.D_4 EE.E_5 FF.F_6
GU304497.1.1513 AA.A_1
AB905872.1.1334 AA.A_1 BB.B_2 CC.C_3 DD.D_4
为此:

EU842263.1.1492 AA.A_1
EU842263.1.1492 BB.B_2
EU842263.1.1492 CC.C_3
LN612956.1.1401 AA.A_1
LN612956.1.1401 BB.B_2
LN612956.1.1401 CC.C_3
LN612956.1.1401 DD.D_4
LN612956.1.1401 EE.E_5
LN612956.1.1401 FF.F_6
GU304497.1.1513 AA.A_1
AB905872.1.1334 AA.A_1
AB905872.1.1334 BB.B_2
AB905872.1.1334 CC.C_3
AB905872.1.1334 DD.D_4
我怎样才能做到这一点


请注意,数据(AA.A_1)仅表示我的真实数据(例如,0.15.01610.011_528399)。

您可以在
Awk
中执行此操作,将第一列中的值作为键,将行其余部分的值作为散列值

awk '
   {
       for(i=2;i<=NF;i++) 
           unique[$1]=(unique[$1]FS$i); next 
   } END { 
      for (i in unique) { 
           n=split(unique[i],temp); 
           for(j=1;j<=n;j++) 
               print i,temp[j] 
         } 
   }' file
awk'
{
对于(i=2;i