Pisahkan file pada pencocokan pola dengan header berbeda menjadi file menggunakan AWK

Saya memiliki file yang perlu dipisahkan berdasarkan pola pencarian menjadi beberapa file dan header berbeda untuk file berbeda. Saya dapat membagi file tetapi tidak dapat menambahkan header berbeda ke file berbeda. Inilah kode yang saya coba:

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 sumber
comment
Perlu disebutkan bahwa FIELDWIDTHS adalah ekstensi melongo. Saya telah menambahkan tagnya.   -  person Tom Fenech    schedule 19.09.2014


Jawaban (1)


Mengapa Anda tidak melakukannya seperti di bawah ini? Dan sejauh yang saya lihat, pengaturan FIELDWITHS hanya berfungsi dengan baik jika diatur di blok BEGIN (atau ketika mengubah file input...):

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