gpt4 book ai didi

linux - 匹配两个文件的内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:15 24 4
gpt4 key购买 nike

我有两个文件:一个包含 AP 名称列表,另一个列表再次包含 AP 名称,但这次每个 AP 的 Controller IP 列在 AP 名称之前。

文件 1:

AP1
AP2
Ap3
AP4
Ap5
Ap6
...

文件 2:

1.1.1.1,Ap1
2.2.2.2,Ap2
3.3.3.3,Ap3
4.4.4.4,Ap4
6.6.6.6,Ap6
...

如何将文件 1 中的名称与文件 2 中的名称匹配,以便输出类似于以下内容?

1.1.1.1,Ap1
2.2.2.2,Ap2
3.3.3.3,Ap3
4.4.4.4,Ap4
IP Not Found,Ap5
6.6.6.6,Ap6

我在想我可以使用 comm 命令,但我不知道有什么好方法可以只比较名称而不比较 IP。我也可以只对每个名称进行 grep,但这会花费很长时间(大约有 8,000 个 AP 名称)。

最佳答案

join 命令将完成这项工作(请注意,这两个文件必须首先按 AP 名称排序;您的示例数据已经是,但如果您的真实世界数据不是,请运行第一个文件通过 sort -f,第二个文件通过 sort -f -t , -k 2)。

join -i -t , -1 1 -2 2 -a 1 -o 2.1,1.1 -e "IP Not Found" file1.txt file2.txt

-i表示忽略大小写,-t ,表示字段之间用逗号分隔,-1 1表示在第一个(只) 第一个文件的字段; -2 2 表示加入第二个文件的第二个字段。 -a 1 表示包含第一个文件中没有任何匹配项的行。 -o 2.1,1.1 指定输出格式:第二个文件的第一个字段(IP),然后是第一个文件的第一个字段(AP)。 -e "IP Not Found" 表示输出“IP Not Found”代替空字段。

这将输出

1.1.1.1,AP1
2.2.2.2,AP2
3.3.3.3,Ap3
4.4.4.4,AP4
IP Not Found,Ap5
6.6.6.6,Ap6

关于linux - 匹配两个文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32292785/

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