本帖最后由 思想之翼 于 2024-12-18 19:26 编辑
D:\A.txt 格式如下:
G B B
B C C C C C C C C C
J A A A A A
J
E E
E D E E E E
下列3行代码,分别提取 A.txt 个数范围为N=1,2-5 N=2,3-7 N=3,6-9 的字符,结果分别写入1.txt 2.txt 3.txt:- gawk -v"N=1,3-5" -v"RS=\r?\n| " -v"ORS= " "{++d[$0]}END{split(N,M,/[^0-9]+/,s);A[M[1]];for(j in s){if(s[j]==\"-\"){for(i=M[j];i<=M[j+1];i++)A[i]}else{A[M[j+1]]}};for(j in A){for(i in d)if(d[i]==j)for(k=1;k<=d[i];k++)print i}}" D:\A.txt > D:\1.txt
复制代码
- gawk -v"N=1,4-7" -v"RS=\r?\n| " -v"ORS= " "{++d[$0]}END{split(N,M,/[^0-9]+/,s);A[M[1]];for(j in s){if(s[j]==\"-\"){for(i=M[j];i<=M[j+1];i++)A[i]}else{A[M[j+1]]}};for(j in A){for(i in d)if(d[i]==j)for(k=1;k<=d[i];k++)print i}}" D:\A.txt > D:\2.txt
复制代码
- gawk -v"N=3,6-9" -v"RS=\r?\n| " -v"ORS= " "{++d[$0]}END{split(N,M,/[^0-9]+/,s);A[M[1]];for(j in s){if(s[j]==\"-\"){for(i=M[j];i<=M[j+1];i++)A[i]}else{A[M[j+1]]}};for(j in A){for(i in d)if(d[i]==j)for(k=1;k<=d[i];k++)print i}}" D:\A.txt > D:\3.txt
复制代码 【问题】
上述3行代码,对 A.txt 解析了3次,如何合并代码,对 A.txt 解析1次后,分别提取N=1,2-5 N=2,3-7 N=3,6-9 的字符,写入1.txt 2.txt 3.txt |