Разделить файл при сопоставлении с образцом с другим заголовком на файлы с помощью AWK

У меня есть файл, который нужно разделить на основе шаблона поиска на несколько файлов и разные заголовки для разных файлов. Я могу разделить файл, но не могу добавить разные заголовки в разные файлы. Вот код, который я пробовал:

BEGIN {
    {
       a=substr($0,38,2)

       if(a=="HD")
       {    
        print"a","b","c"...
         OFS="|"  
        }
       if(a=="AS")
        {    
        print"e","f","g"...
        OFS="|"
        }
    }   
}
{
       a=substr($0,38,2)

       if(a=="HD")
       {
        FIELDWIDTHS="10 8 10 9 2 1 1 11 14 14 14 14 14 14 14 14 8 60 30 30 32 32 27 18 11 346"
        OFS="|"  
        }
        if(a=="AS")
        {       
        FIELDWIDTHS="10 8 10 9 2 1 7 30 14 14 14 14 625"
        OFS="|"
        }
}
{
  $1=$1
  print > a".txt"
}

person user3168017    schedule 19.09.2014    source источник
comment
Стоит отметить, что FIELDWIDTHS является расширением gawk. Я добавил тег.   -  person Tom Fenech    schedule 19.09.2014


Ответы (1)


Почему бы вам не сделать это, как показано ниже? И насколько я вижу, настройка FIELDWITHS работает правильно только в том случае, если она была установлена ​​в блоке BEGIN (или при изменении входного файла...):

awk 'NR=1 { HEADER1 = "whatever" ; HEADER2 = "whatever2" ; 
           print HEADER1 > FIRSTFILE ; 
           print HEADER2 > SECONDFILE ; 
         }
    { a=substr($0,38,2)
      OFS="|"
      print $0 >> a".txt"
    }' INPUTFILE
person Zsolt Botykai    schedule 19.09.2014