主要的 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
关于windows - 从一个txt文件中查找相似的数字并将匹配的编号行保存在不同的txt中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66304300/