0

我有两个文件,一个有一个 IP 地址(我已经使用 perl 去除了 ip),一个有更多信息的 ip。我需要进行比较或使用 perl 并在每个文件中找到重复的 IP。但我需要包含更多信息的第二个文件保持完整,当找到重复文件时打印第二个文件的整行。

file1 内容示例(只是 ip 没有逗号等)

114.42.141.131

file2 内容示例(找到匹配项时需要打印所有这些信息)

114.42.141.131,Host TW,Taipei,25.0391998291,121.525001526

这有点超出我的技能。任何帮助将不胜感激!!!

谢谢!

4

3 回答 3

2

要匹配第一个字段,您只需要:

awk -F, 'FNR==NR { a[$1]; next } $1 in a' file1 file2
于 2013-02-14T15:07:36.673 回答
0

我假设您具有外壳访问权限。

如果第一个文件只包含 IP,那么您可以执行以下操作:

REF_IP=`cat file1`

然后,您可以使用第二个文件中的 grep:

grep "${REF_IP}" file2

结果应该是具有重复地址的行。

注意:实际语法可能略有不同(我现在无法访问 shell)

高温高压

于 2013-02-14T14:55:55.817 回答
0

看看这个 oneliner,如果它是你想要的:

请注意,这只会在 file2 中打印重复的 ip 行一次。还假设file2中没有重复的ips。

 awk -F, 'NR==FNR{p[$1]=$0;next}{a[$0]++}END{for(x in a)if (a[x]>1)print p[x]}' file2 file1

小测试:

kent$  head f1 f2
==> f1 <==
1.1.1.1
1.1.1.1
1.1.1.1
2.2.2.2

==> f2 <==
1.1.1.1,Host TW,Taipei,25.0391998291,121.525001526
2.2.2.2,this is for 2.2.

kent$  awk -F, 'NR==FNR{p[$1]=$0;next}{a[$0]++}END{for(x in a)if (a[x]>1)print p[x]}' f2 f1
1.1.1.1,Host TW,Taipei,25.0391998291,121.525001526
于 2013-02-14T15:00:39.150 回答