标题: [文本处理] 【已解决】gawk:提取文件夹内所有文本的共有数据,如何将数据0包含在内 [打印本页]
作者: 思想之翼 时间: 昨天 14:00 标题: 【已解决】gawk:提取文件夹内所有文本的共有数据,如何将数据0包含在内
本帖最后由 思想之翼 于 2024-11-21 16:58 编辑
下列代码提取D:\DATA1\内所有文本的共有数据:- gawk "FNR==1{No++}NR==FNR{if(NF){for(i=0;i++<NF;)if($i)a[$i]=No}next}NF{for(i=0;i++<NF;)if($i)if($i in a)if(a[$i]==No-1)a[$i]=No}END{for(id in a)if(a[id]==No)print id}" D:\DATA1\*.txt>D:\DATA2\A.txt
复制代码
D:\data1\内有若干文本
001.txt 记录数据
0000 0001 0001 9999
0000 0002 0003
9999
002.txt 记录数据
8888 9999 9999 9999
7777 0000
003.txt 记录数据
9999 8888 7777 6666
5555 0000
结果:
D:\data2\A.txt为 9999,排除了 0000
如何将数据0000包含在内?
作者: wanghan519 时间: 昨天 15:08
不知道理解的对不对
gawk '{for(i=1;i<=NF;i++)a[FILENAME][$i]=1}END{for(i in a)for(j in a[i])if(++d[j]==3)print j}' *.txt
作者: hfxiang 时间: 昨天 16:09
回复 1# 思想之翼
对2楼的代码稍作改动 ,其通用性更强,以满足楼主需求- gawk "FNR==1{No++}{for(i=0;i++<NF;)a[No][$i]=1}END{for(i in a)for(j in a[i])if(++d[j]==No)print j}" D:\DATA1\*.txt>D:\DATA2\A.txt
复制代码
作者: Five66 时间: 昨天 16:51
删掉1楼的
if($i)
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |