++吧 然后在最后判断次数
作者: hfxiang 时间: 2023-4-19 18:55
回复 1# 思想之翼
私信收到,但此主题已超出本人能力之极限。在此对辜负信任深表歉意 ,抱歉抱歉
作者: terse 时间: 2023-4-19 23:08
本帖最后由 terse 于 2023-4-19 23:09 编辑
是不是这个意思 你替换一下试- gawk -F"=" "ARGIND>1{if(b[$1]){a[ARGIND]=c[$2]++;next}}{b[$0]=1}END{for(i=2;i<=ARGIND;i++){ if(a[i]){f=ARGV[i];sub(/^d:\\HY/,\"e:\\HY\\GD\",f);for( k in c ) { if (c[k]==7) print(k)}}}}" "e:\ZD\GD\!p:~1!\!p:~1!_%%g.txt" d:\HY\!p:~1!\!p:~1!_%%g.txt
复制代码
作者: 思想之翼 时间: 2023-4-21 14:12
本帖最后由 思想之翼 于 2023-4-21 17:01 编辑
回复 4# terse
感谢帮助!经测试,代码没有统计替换后的7个文件中总共出现7次的字符。
简单说,是文本 1替换a,2替换b,3替换c,4替换d,5替换e,6替换f,7替换g,
然后 a+b+c+d+e+f+g,取出现7次的字符。
文本1 2 3 4 5 6 7 在D:\A\01\
文本a b c d e f g 在E:\B\01\
(文本1234567 与 文本abcdefg 同名)
取出的字符,写入F:\C\01.txt
作者: terse 时间: 2023-4-21 14:54
本帖最后由 terse 于 2023-4-21 16:55 编辑
回复 5# 思想之翼
错误是指哪部分? 是输出路径有误,还是取值错误;或其他错误
下面输出应该看出是那部分错 最好发上来指出哪部分的错误- gawk -F"=" "ARGIND>1{if(b[$1]){a[ARGIND]=c[$2]++;next}}{b[$0]=1}END{for(i=2;i<=ARGIND;i++){ if(a[i]){f=ARGV[i];sub(/^d:\\HY/,\"e:\\HY\\GD\",f);for( k in c ) { if (c[k]==7) print(k,f)}}}}" "e:\ZD\GD\!p:~1!\!p:~1!_%%g.txt" d:\HY\!p:~1!\!p:~1!_%%g.txt
复制代码
替换下面的试试呢- gawk -F"=" "ARGIND>1{if(b[$1]){a[ARGIND,a[ARGIND]++]=$2;next}}{b[$0]=1}END{for(i=2;i<=ARGIND;i++){if(a[i]){f=ARGV[i];sub(/^d:\\HY/,\"e:\\HY\\GD\",f);for(j=0;j<a[i];j++){print(a[i,j])>f;c[a[i,j]]++}}}for(k in c)if(c[k]==7)print(k)}" "e:\ZD\GD\!p:~1!\!p:~1!_%%g.txt" d:\HY\!p:~1!\!p:~1!_%%g.txt >F:\C\01.txt
复制代码
作者: buyiyang 时间: 2023-4-21 15:12
回复 4# terse
他的要求应该是统计替换后的7个文件中总共出现7次的字符
作者: 思想之翼 时间: 2023-4-21 17:42
本帖最后由 思想之翼 于 2023-4-22 17:17 编辑
回复 6# terse
感谢帮助!第2个代码结果正确。替换后的7个文本如果不写入文件夹(非先写入再删除)就完美了。因为替换7个文本,是中间过程,没必要输出,况且体积大,先输出再读入不但费时,而且徒增M.2硬盘擦洗次数。
作者: terse 时间: 2023-4-21 17:48
7个文件只读取 不写入- gawk -F"=" "ARGIND>1{if(b[$1]){a[ARGIND,a[ARGIND]++]=$2;next}}{b[$0]=1}END{for(i=2;i<=ARGIND;i++){if(a[i]){for(j=0;j<a[i];j++)c[a[i,j]]++}}for(k in c)if(c[k]==4)print(k)}"
复制代码
回复 8# 思想之翼
作者: Five66 时间: 2023-4-21 18:26
还是全部放进gawk里吧,参考下面的- BEGIN{
- for(i=1;i<1799;i++){
- for(j=1;j<8;j++){
- dictxt=sprintf("d:\\HY\\%06d\\%06d_%d.txt",i,i,j);
- reptxt=sprintf("e:\\ZD\\GD\\%06d\\%06d_%d.txt",i,i,j);
- while(getline <reptxt){
- split($0,sp,"=");
- 处理替换文本;
- }
- while(getline <dictxt){
- split($0,sp,"=");
- 处理字典文本;
- }}
- 统计并提取重复N次的字符;
- 打印输出;
- }}
复制代码
作者: 思想之翼 时间: 2023-4-22 12:05
回复 10# Five66
感谢帮助!参考您的思路,边学边用,捣鼓了一番不得要领,恳望您结合1#实例,给予指导。
作者: Five66 时间: 2023-4-24 10:13
回复 11# 思想之翼
参考下面的,直接保存成文件,然后用gawk -f 选项,例如gawk-f awk.txt
因为全放进gawk里面,其他bat代码就不需要了
注意:
没用过windows的gawk,不知道有无问题
没有处理细节,例如要处理的文件不存在时可能会无限循环
当然你也可以将代码弄成只有一行的来使用(注意特殊字符)- BEGIN{
- for(i=1;i<1799;i++){
- for(j=1;j<8;j++){
- dictxt=sprintf("d:\\HY\\%06d\\%06d_%d.txt",i,i,j);
- reptxt=sprintf("e:\\ZD\\GD\\%06d\\%06d_%d.txt",i,i,j);
- while(getline <reptxt){
- b[$0]++;
- }
- while(getline <dictxt){
- split($0,sp,"=");
- if(b[sp[1]]){a[sp[2]]++;}
- }
- delete b;
- }
- outtxt=sprintf("e:\\TQ\\GD\\%06d_%d.txt",i,i);
- for(k in a){if(a[k]==7)print(k) >outtxt;}
- delete a;
- }}
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |