找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11370|回复: 3

[文本处理] 【已解决】gawk:提取文件夹内所有文本的共有数据,如何将数据0包含在内

[复制链接]
发表于 2024-11-21 14:00:13 | 显示全部楼层 |阅读模式
本帖最后由 思想之翼 于 2024-11-21 16:58 编辑

下列代码提取D:\DATA1\内所有文本的共有数据:
  1. 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包含在内?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-11-21 15:08:52 | 显示全部楼层
不知道理解的对不对
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

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

发表于 2024-11-21 16:09:59 | 显示全部楼层
回复 1# 思想之翼

对2楼的代码稍作改动 ,其通用性更强,以满足楼主需求

  1. 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
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

发表于 2024-11-21 16:51:35 | 显示全部楼层
删掉1楼的
if($i)

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 20:45 , Processed in 0.021735 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表