我有两个文件,一个带有一个IP地址(我已经使用perl来剥离ip),另一个带有更多信息的ip。我需要做一个commpare或使用perl并在每个文件中找到重复的IP。但我需要第二个文件,其中包含更多信息,以及何时找到重复项打印第二个文件的整行。
file1内容示例(只是ip无逗号等)
114.42.141.131
file2内容示例(找到匹配时需要打印所有这些信息)
114.42.141.131,Host TW,Taipei,25.0391998291,121.525001526
这有点超出我的技能。任何帮助将不胜感激!!!
谢谢!
答案 0 :(得分:2)
要匹配第一个字段,您只需要:
awk -F, 'FNR==NR { a[$1]; next } $1 in a' file1 file2
答案 1 :(得分:0)
我假设您有shell访问权限。
如果第一个文件只包含IP,那么您可以执行以下操作:
REF_IP=`cat file1`
然后,您可以使用第二个文件中的grep:
grep "${REF_IP}" file2
结果应该是带有重复地址的行。
注意:实际语法可能略有不同(我现在无法访问shell)
HTH
答案 2 :(得分: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