gpt4 book ai didi

linux - Unix - 通过匹配前 91 个字符来获取文件 2 中不在文件 1 中的记录

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:42 25 4
gpt4 key购买 nike

我想通过匹配每个文件的前 91 个字符来比较 file2 和 file1,并将完整记录从 file2 输出到 file3。我是 Unix 命令的新手,似乎无法理解这一点。

提前致谢,杰夫

最佳答案

我生成的虚拟文件如下:

文件1

A012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
B012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
D012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
E012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
F012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789

文件2

Z012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 1
B012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 2
T012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 3
D012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 4
E012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 5
F012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 6

那么我想你想要这个:

awk '
# Processing for file1, basically create associative array entry indexed by leftmost 91 characters
FNR==NR { f1[substr($0,1,91)]++; next }

# Processing for second file
f1[substr($0,1,91)] > 0

' file1 file2

示例输出

B012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 2
D012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 4
E012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 5
F012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 Line 6

实际上,我现在认为您可能恰好需要其他行,如果是这样,请更改:

f1[substr($0,1,91)] > 0

为此:

! f1[substr($0,1,91)]

关于linux - Unix - 通过匹配前 91 个字符来获取文件 2 中不在文件 1 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40312443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com