Chinaunix

标题: 如何一个多行内容的文件去和另一个多行内容的文件去匹配? [打印本页]

作者: djzhangxing    时间: 2014-08-13 17:16
标题: 如何一个多行内容的文件去和另一个多行内容的文件去匹配?
如何将file1中属于在file2中echo出来,我想要的结果中就是file1.txt中只是在file2.txt网段中就打印出来

  1. cat file1.txt
  2. 115.182.51.162
  3. 115.182.51.163
  4. 123.125.27.56
  5. 115.182.51.164
  6. 113.207.127.206
  7. 117.121.53.59
  8. 113.207.127.207
  9. 10.182.198.99
  10. 10.182.198.100
  11. 113.207.127.208
复制代码

  1. cat file2.txt
  2. 117.121.53.x
  3. 220.181.117.x
  4. 10.182.198.x
  5. 123.125.27.x
复制代码

作者: li0924    时间: 2014-08-13 17:19
  1. awk -F"." 'NR==FNR{a[$1$2$3]=1;next}a[$1$2$3]' file2.txt file1.txt
复制代码

作者: dn833    时间: 2014-08-13 17:28
  1. #!/bin/bash
  2. S_FILE=($(cat file1.txt))
  3. D_FILE=($(cat file2.txt))
  4. for i in ${S_FILE[@]}
  5. do
  6.         for j in ${D_FILE[@]}
  7.         do
  8.         if [[ "$i" =~ "${j%.*}" ]];then
  9.         echo "$i"
  10.         fi
  11.         done
  12. done
复制代码

作者: zxy877298415    时间: 2014-08-13 21:26
本帖最后由 zxy877298415 于 2014-08-13 21:27 编辑

回复 1# djzhangxing
awk -F. 'NR==FNR{a[$1$2$3]=a[$1$2$3]?a[$1$2$3] "\n"$0:$0;next}{print a[$1$2$3]}' file1.txt file2.txt
   
作者: yestreenstars    时间: 2014-08-13 23:58
  1. awk -F. -vOFS=. 'NR==FNR{$4="";a[$0];next}{t=$4;$4="";if($0 in a)print $0t}' file2.txt file1.txt
复制代码

作者: yestreenstars    时间: 2014-08-14 00:01
@li0924@zxy877298415
不要用$1$2$3这种方式,可能会出错~
作者: li0924    时间: 2014-08-14 09:19
回复 6# yestreenstars
理解。那就加上FS吧-$1 FS $2 FS $3。或者把$4置空。


   
作者: zxy877298415    时间: 2014-08-14 09:24
回复 6# yestreenstars
哦,楼主想是想把file1在file2中的输出,还是想把file2在file1中的输出。。。。。


   
作者: fxpbupt    时间: 2014-08-14 09:54
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' urfile |xargs -L 1 -i  grep {} a
作者: fxpbupt    时间: 2014-08-14 09:56
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file2|xargs -L 1 -i  grep {} file1
作者: yestreenstars    时间: 2014-08-14 10:28
回复 8# zxy877298415

你的语文需要恶补~
   
作者: fxpbupt    时间: 2014-08-14 10:32
同感,楼主发了好多帖子,句子都不通顺

回复 11# yestreenstars


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2