热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从一个txt文件中查找相似的数字并将匹配的编号行保存在不同的txt中

主要的txt(data.txt)包含例如:LibID4444QTID4444SOQID80MACID21563

主要的 txt (data.txt) 包含例如:

Lib ID 4444
QT ID 4444
SOQ ID 80
MAC ID 21563
LED ID 4444
TRD ID 80
CAD ID 31256
OIL ID 21563
MNO ID 3315
TOP ID 638

而这样的例子不胜枚举。数字最少为 2 到 5 位数字。我想要做的是匹配相同的数字并将它们保存在单独的 txt 文件中。文件可以按号码名称保存,也可以是任何随机名称。例如,它将以下 ID 保存在单独的 txt 文件(4444.txt 或 random.txt)中:

LED ID 4444
QT ID 4444
Lib ID 4444

它将在不同的txt中保存80个:

TRD ID 80
SOQ ID 80

在不同的 txt 中保存另一个匹配项:

OIL ID 21563
MAC ID 21563

并且具有唯一编号的行将保存在不同的 txt 中,例如 (unique.txt):

MNO ID 3315
TOP ID 638
CAD ID 31256

我试过使用这个正则表达式:

(d)(?!1+$)d*

它匹配相似的数字,但我坚持将它们分开。任何帮助将不胜感激。

回答


$ cat tst.awk
{
if ( $3 in key2out ) {
out = key2out[$3]
if ( $3 in key2first ) {
print key2first[$3] > out
delete key2first[$3]
}
print >> out
close(out)
}
else {
key2out[$3] = $3 ".txt"
key2first[$3] = $0
}
}
END {
for (key in key2first) {
print key2first[key] > "unique.txt"
}
}

$ awk -f tst.awk file
$ head *.txt
==> 21563.txt <==
MAC ID 21563
OIL ID 21563
==> 4444.txt <==
Lib ID 4444
QT ID 4444
LED ID 4444
==> 80.txt <==
SOQ ID 80
TRD ID 80
==> unique.txt <==
TOP ID 638
MNO ID 3315
CAD ID 31256





回答


使用您显示的样本,您能否尝试以下操作。用 GNU 编写和测试awk

awk '
FNR==NR{
arr[$NF]++
next
}
arr[$NF]==1{
print > ("unique.txt")
next
}
arr[$NF]>1{
outFile=$NF".txt"
print >> (outFile)
close(outFile)
}
' Input_file Input_file

说明:为以上添加详细说明。

awk ' ##Starting awk program from here.
FNR==NR{ ##Checking condition which will be TRUE when Input_file is being read first time.
arr[$NF]++ ##Creating arr with index of last field and increasing it 1 each time it comes with same one.
next ##next will skip all further statements from here.
}
arr[$NF]==1{ ##Checking condition if any value(last field) occurs only 1 time in whole Input_file then do following.
print > ("unique.txt") ##Printing current line to unique.txt output file.
next ##next will skip all further statements from here.
}
arr[$NF]>1{ ##Checking condition if last field comes more than 1 then do following.
outFile=$NF".txt" ##Creating outFile variable with last field .txt to it.
print >> (outFile) ##Printing current line to output file here.
close(outFile) ##Closing output file in backend to avoid "too many opened files" error.
}
' Input_file Input_file ##Mentioning Input_file(s) here.





回答


另一个 awk 创建名为1... nf代码中的变量)的文件:

$ awk '{
if(!($3 in a) && !($3 in u)) {
u[$3]=$0
next
}
if($3 in u) { # u hash holds uniques
a[$3]=++f # file naming happens here
print u[$3] >> a[$3]
print >> a[$3]
close(a[$3])
delete u[$3] # delete from unique hash when not unique anymore
next
}
print >> a[$3]
close(a[$3])
}
END { # in the end
f++
for(i in u) # print all uniques to last file
print u[i] > f
}' file





回答


@ECHO OFF
SETLOCAL
rem The following settings for the source directory, destination directory, target directory,
rem batch directory, filenames, output filename and temporary filename [if shown] are names
rem that I use for testing and deliberately include names which include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "sourcedir=u:your files"
SET "destdir=u:your results"
SET "filename1=%sourcedir%q66304300.txt"
FOR /f "usebackqtokens=1,2,*delims= " %%u IN ("%filename1%") DO (ECHO %%u %%v %%w)>>"%destdir%%%w.txt"
FOR /f %%e IN ('dir /b /a-d "%destdir%*.txt"') DO (
SET "multiline="
FOR /f "usebackqskip=1" %%b IN ("%destdir%%%e") DO SET "multiline=%%b"
IF NOT DEFINED multiline TYPE "%destdir%%%e">>"%destdir%oncers.txt"&DEL "%destdir%%%e"
)
GOTO :EOF

从在的资源文件的每一行,选择每个3个栏至%%u%%v%%w.TXT在假定的空目标目录并追加到文件名(第三列)。

然后从目标目录中读取每个文件。如果它只有 1 行,则将其附加到oncers.txt目标目录中并删除它。






推荐阅读
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • Flowable 流程图路径与节点展示:已执行节点高亮红色标记,增强可视化效果
    在Flowable流程图中,通常仅显示当前节点,而路径则需自行获取。特别是在多次驳回的情况下,节点可能会出现混乱。本文重点探讨了如何准确地展示流程图效果,包括已结束的流程和正在执行的流程。具体实现方法包括生成带有高亮红色标记的图片,以增强可视化效果,确保用户能够清晰地了解每个节点的状态。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 通过使用 `pandas` 库中的 `scatter_matrix` 函数,可以有效地绘制出多个特征之间的两两关系。该函数不仅能够生成散点图矩阵,还能通过参数如 `frame`、`alpha`、`c`、`figsize` 和 `ax` 等进行自定义设置,以满足不同的可视化需求。此外,`diagonal` 参数允许用户选择对角线上的图表类型,例如直方图或密度图,从而提供更多的数据洞察。 ... [详细]
  • 本文介绍了如何在 Spring 3.0.5 中使用 JdbcTemplate 插入数据并获取 MySQL 表中的自增主键。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
author-avatar
dwxa520恋歌_261
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有