使用AWK将与不同标头匹配的模式文件拆分为文件

时间:2014-09-19 07:25:58

标签: regex awk gawk

我有一个文件需要根据搜索模式分成多个文件和不同文件的不同标题。我可以拆分文件,但无法为不同的文件添加不同的标头。这是我试过的代码:

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"
}

1 个答案:

答案 0 :(得分:0)

为什么不按照以下方式进行操作?据我所知,设置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