如何使用unix按行打印特定列?

如何使用unix按行打印特定列?,unix,awk,grep,nawk,Unix,Awk,Grep,Nawk,我有一个输入文件,如下所示 Values,series,setupresultcode,nameofresultcode,resultcode 2,9184200,,serviceSetupResultempty,2001 11,9184200,0,successfulReleasedByService,2001 194,9184200,1,successfulDisconnectedByCallingParty,2001 101,9184200,2,successfulDisconnectBy

我有一个输入文件,如下所示

Values,series,setupresultcode,nameofresultcode,resultcode
2,9184200,,serviceSetupResultempty,2001
11,9184200,0,successfulReleasedByService,2001
194,9184200,1,successfulDisconnectedByCallingParty,2001
101,9184200,2,successfulDisconnectByCalledParty,2001
2,9184201,0,successfulReleasedByService,2001
78,9184201,1,successfulDisconnectedByCallingParty,2001
32,9184201,2,successfulDisconnectByCalledParty,2001
4,9184202,0,successfulReleasedByService,2001
63,9184202,1,successfulDisconnectedByCallingParty,2001
37,9184202,2,successfulDisconnectByCalledParty,2001
我希望输出如下所示:

Series,successfulReleasedByService,successfulDisconnectedByCallingParty,successfulDisconnectByCalledParty,serviceSetupResultempty
9184200,11,194,101,2
9184202,4,63,37,
保留系列作为系列的通用打印值,即。关于结果代码的第一列。即输入文件中的第三列(整数)或第四列(字符串)


例如:数据的第二列有n个系列;以9184200为例。具有4个setupresultcode(空、0、1、2)的序列。每个结果代码的名称在第4列中给出。如果resultcode为0,则我要打印;i、 e.成功发布DbyService,然后打印与系列9184200相关的值11。

类似的内容可能会起作用,尽管我还没有测试它,但将其视为某种伪代码

#!/bin/awk -f
BEGIN
{
  number_of_series=0;
}
{
  #This part will be executed for every line
  if ($3 =="0" || $3 == "1" || $3 == "2")
  {
    for (i=1; i<=number_of_series; i++)
    {
      #If the series has already been added
      if(seriesarray[i] == $2)
      {
        #Concat the results
        seriesarray[$2]=seriesarray[$2]","$1;
      }
      #If it's a new series
      else
      {
        number_of_series++;
        seriesarray[$2]=$1;
      }
    }
  }
}
END
{
  #Iterate over the series and print the series id and the concatenated results
  for (series in seriesarray)
  {
    print series, seriesarray[series];
  }
}
#/垃圾箱/awk-f
开始
{
_系列的_个数=0;
}
{
#该部分将针对每一行执行
如果($3==“0”| |$3==“1”| |$3==“2”)
{

对于(i=1;isorry,我不理解转换的逻辑。您能更深入地展开和解释吗?我认为@gyrous想要将
unique(setupresultcode)
值转换为列标题,
unique(series)
转换为行,并在每一行列对中列出相应的
值。
。抱歉,我也感到困惑(.让我试着解释一下,例如:第二列有n个系列,取9184200。该系列有4个setupresultcode(空,0,1,2)。每个结果代码的名称在第四列中给出。我想打印resultcode是否为0.i.esSuccessfulReleasedByService,然后打印关于系列9184200的值11。(1)为什么没有
9184201
行?(2)
10200
来自何处?请将解释编辑到问题中,而不是添加注释。嗨,克里斯托弗,谢谢你的帖子。你能告诉我一件事如何输入吗?我遇到了这样的错误../test.sh>