从GAWK中的数组命名数组

时间:2015-11-13 23:29:18

标签: arrays gawk

我有一个包含重复元素的文件。我想将记录分配给一个数组,直到文件重复,此时我想创建一个新的数组来分配记录。我想这样做很多次。

例如。

$ cat repeat.txt
a
b
c
d
e
f
g
a
b
c
d
e
f
g
a
b
c
d
e
f
g

我希望输出是这样的

0 a a a
1 b b b
2 c c c
3 d d d
4 e e e
5 f f f
6 g g g

现在我用这个可怕的代码来做这件事。

    awk 'BEGIN{n=0;z=0}
         $1~"a" {n=0;z++}
         z==1{a[n]=$0}
         z==2{b[n]=$0}
         z==3{c[n]=$0}
         z==4{d[n]=$0}
         z==5{e[n]=$0}
         z==6{f[n]=$0}
         {n++}
         END{for  (i in a) 
              print i,a[i],b[i],c[i],d[i],e[i],f[i],g[i],h[i],k[i],j[i]}'                 
         repeat.txt

我希望新数组的分配是自动的。

我通过以下

尝试了这个
 echo "abcdefghijklmopqrstuvwxyz" > alphabet.txt  

     awk  'BEGIN{N=0}
           NR==FNR{FS=""}
           NR==FNR{for (zz=0;zz<=NF;zz++) a[zz]=$zz; next} 
           NR!=FNR{FS="\t"}
           NR!=FNR{if ($0~a) N++; (a[N])[N]=$0}
           END{for (I in (a[N])) print I,(a[N])[I]}' alphabet.txt repeat.txt

但这不起作用,因为你不能在gawk中做这样的多维数组。我想不出另一种方法。

0 个答案:

没有答案