回复 2# Five66
啊 ,2楼的代码结果顺序并不正确 ,除了第一行 ,后面的都偏移了1
改正如下 ,批处理文件中运行(cmd窗口运行的话将双英文百分号给位单英文百分号)- gawk "function fff(a,b,c,d,e){X[x]=c;Y[y]=d;Z[z]=e;for(C[i]=Y[y];C[i]<=a-1;C[i]++){t=Z[z]\"\"B[C[i]+1];if(length(t)==b){if(u){o=m%%n;print t>>D[o]\".txt\";m++}else{D[n++]=t;print t>t\".txt\"}}else{l=C[i]+1;x++;y++;z++;i++;fff(a,b,c,l,t)}};x--;y--;z--;i--;};BEGIN{u=0}{split($0,A,/./,B);fff(7,4,1,0,\"\");u++}" A.txt
复制代码 补上一个问题二 ,仅适用原来文本第一行为1234567并且是7选4的组合 ,合并后文件名为m_A.txt- gawk "ARGIND==1{A[++i]=$0}ARGIND>1{++l;if(l>i){l=1};c=$0;s=substr(c,length(c),1);A[l]=A[l]\"\"s}END{for(k=1;k<=i;k++)print A[k];}" 1234.txt 1235.txt 1236.txt 1237.txt >m_A.txt
复制代码 同问题二 ,原来文本第一行为可为任意 ,并且可是任意选任意的组合(设置变量m跟n) ,因为是通过文件创建时间来决定顺序的 ,结果可能不准确 ,合并后文件名为m_A.txt- dir /tc|sort|gawk -v"m=7" -v"n=4" "{split($0,D,/ +/);s=length(D);if(match(D[s],/txt$/))if(length(D[s])==n+4)F[++i]=D[s]}END{for(i=1;i<=n;i++){if(F[i]){while((getline l<F[i])>0){if(i==1){A[++j]=l}else{++k;if(k>j)k=1;if(length(A[k])<m){s=substr(l,length(l),1);A[k]=A[k]\"\"s;}}}}};for(i=1;i<=j;i++)print A[i]}" >m_A.txt
复制代码
|