我有一个包含重复元素的文件。我想将记录分配给一个数组,直到文件重复,此时我想创建一个新的数组来分配记录。我想这样做很多次。
例如。
$ 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中做这样的多维数组。我想不出另一种方法。