LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1072|回复: 11

如何找出文件的差异?

[复制链接]
发表于 2006-2-27 15:32:31 | 显示全部楼层 |阅读模式
假设有两个文件:
file1:
1.2.3.4
1.2.3.5
1.2.3.6


file2:
1.2.3.4
10.12.23.34
1.2.3.5

要求找出在file1中但没在file2中的ip,如上的结果应该为1.2.3.6

谢谢
发表于 2006-2-27 15:45:38 | 显示全部楼层
我有个笨办法~~
  1. declare -i line=`cat file2 | wc -l`
  2. file1=`cat file1`
  3. for (( i = 1; i <= $line; i++))
  4. do  ip=`cat file2 | sed -n ''$i'p'`
  5.     echo $file1 | grep '$ip'
  6.     if [ ! "`echo $file1 | grep $ip`" ]; then
  7.        echo $ip
  8.     fi
  9. done
复制代码


我没在linux下,试试吧

不过我这个只能找1个文件中的不同~~~~
回复 支持 反对

使用道具 举报

发表于 2006-2-27 15:53:10 | 显示全部楼层
diff file1 file2
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-27 16:04:18 | 显示全部楼层
Post by Yuri
diff file1 file2

多谢兄弟提示,看来还是实践少了点.
我最终的结果是:diff file1 file2|grep ^"<"|awk '{print $2}'

谢谢
回复 支持 反对

使用道具 举报

发表于 2006-2-27 23:45:36 | 显示全部楼层
comm file1 file2

man comm
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-28 12:20:26 | 显示全部楼层
Post by 终极幻想
comm file1 file2

man comm

comm命令是正解,用comm -2 -3 file1 file2就实现了,不用管道,也不用过滤,好
回复 支持 反对

使用道具 举报

发表于 2006-2-28 12:33:34 | 显示全部楼层
-3     suppress lines that appear in both files

oo ~~ 原来-3是干这个用的 呵呵
明白了,呵呵。又学了一个有用的新命令。先用 -2 找出来禁止显示b的。然后在禁止显示都有的。。
回复 支持 反对

使用道具 举报

发表于 2006-3-1 11:38:21 | 显示全部楼层
呵呵,不错,虽然简单,不过还是学到知识.
diff的命令,没有实践过,不太懂
回复 支持 反对

使用道具 举报

发表于 2006-3-5 16:10:31 | 显示全部楼层
comm命令两个文件必须要先排序过的,不然就会得不到所需的结果
回复 支持 反对

使用道具 举报

发表于 2006-3-5 22:15:08 | 显示全部楼层
Post by jiazhengw
comm命令两个文件必须要先排序过的,不然就会得不到所需的结果


是哦,如果相同两行是错开得话,还是会被认为是一个文件的独有
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表