免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1763 | 回复: 6
打印 上一主题 下一主题

Compare file content [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-28 06:23 |只看该作者 |倒序浏览
$ cat /tmp/f1
line1
line2
line3
line4
line5

$ cat /tmp/f2
line2
line4

$ cat comp
#!/bin/ksh

cat /tmp/f1 | while read f1_line
do
  grep -i "${f1_line}" /tmp/f2
  if [ $? -eq 1 ] ; then
    echo $f1_line
  fi
done

用运行./comp 来比较两个文件, f1 和f2, 找出在f1中没有出现在f2的行. 预期的结果是显示
line1
line3
line5

不知脚本comp有什么问题, 结果显示出f1中的所有行?

论坛徽章:
0
2 [报告]
发表于 2006-08-28 08:23 |只看该作者
因为你的line2 line4是grep显示的,不是echo显示的。


不过你可以这样
grep -v -f f2 f1

论坛徽章:
0
3 [报告]
发表于 2006-08-28 15:09 |只看该作者
原帖由 ccf 于 2006-8-28 08:23 发表
因为你的line2 line4是grep显示的,不是echo显示的。


不过你可以这样
grep -v -f f2 f1


>> 因为你的line2 line4是grep显示的,不是echo显示的。

ccf, 能不能说得详细一点?

论坛徽章:
0
4 [报告]
发表于 2006-08-28 16:31 |只看该作者
你先把  echo $f1_line这一行前面加#号,再看运行结果应该就明白了。

论坛徽章:
0
5 [报告]
发表于 2006-08-28 16:51 |只看该作者
原帖由 jgwang 于 2006-8-28 06:23 发表
$ cat /tmp/f1
line1
line2
line3
line4
line5

$ cat /tmp/f2
line2
line4

$ cat comp
#!/bin/ksh

cat /tmp/f1 | while read f1_line
do
  grep -i "${f1_line}" /tmp/f2
  if [ $ ...



grep -i "${f1_line}" /tmp/f2 >/dev/null

论坛徽章:
0
6 [报告]
发表于 2006-08-28 17:21 |只看该作者
原帖由 jgwang 于 2006-8-28 15:09 发表


>> 因为你的line2 line4是grep显示的,不是echo显示的。

ccf, 能不能说得详细一点?



line1    #echo
line2    #grep
line3    #echo
line4    #grep
line5    #echo

论坛徽章:
0
7 [报告]
发表于 2006-08-28 19:40 |只看该作者
原帖由 jgwang 于 2006-8-28 06:23 发表
$ cat /tmp/f1
line1
line2
line3
line4
line5

$ cat /tmp/f2
line2
line4

$ cat comp
#!/bin/ksh

cat /tmp/f1 | while read f1_line
do
  grep -i "${f1_line}" /tmp/f2
  if [ $ ...




  1. awk 'NR==FNR{x[$0]++}NR>FNR{printf !x[$0]?$0"\n":""}' f2 f1
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP