[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
不知行否
问题一
批处理文件中
默认换行符
  1. 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){++m;o=m%%n;print t>>D[o]\".txt\"}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
复制代码
1

评分人数

TOP

问题2麻烦之处在于楼主要求输出的文件没有顺序 ,在不知道原本内容情况下无法确定文件顺序(不知道怎么确认)
但是如果输出的文件是1.txt , 2.txt ,3.txt ,4.txt ,5.txt ,6.txt ,7.txt .... ,35.txt的话
文件名已经明确了顺序 ,7组合4的情况下 ,只需要前4个文件就行了(即1.txt , 2.txt ,3.txt ,4.txt)
取1.txt的每一行跟2.txt ,3.txt ,4.txt每一行的最后一个就是了

TOP

回复 2# Five66


        啊 ,2楼的代码结果顺序并不正确 ,除了第一行 ,后面的都偏移了1

改正如下 ,批处理文件中运行(cmd窗口运行的话将双英文百分号给位单英文百分号)
  1. 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
  1. 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
  1. 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
复制代码

TOP

突然意识到一个问题
难道生成的文本名字不是根据第一行的组合来命名的???
而是不管第一行是啥都是1234.txt 1235.txt 1236.txt 1237.txt 1245.txt 1246.txt 1247.txt 1256.txt 1257.txt 1267.txt 1345.txt 1346.txt 1347.txt 1356.txt 1357.txt 1367.txt 1456.txt 1457.txt 1467.txt 1567.txt 2345.txt 2346.txt 2347.txt 2356.txt 2357.txt 2367.txt 2456.txt 2457.txt 2467.txt 2567.txt 3456.txt 3457.txt 3467.txt 3567.txt 4567.txt

TOP

返回列表