Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103682834
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-18 22:53:44

比较两个文本文件的程序

#!/bin/ksh
#
#
function Usage {
echo "Usage: dfile [-x|-y|-z] file1 file2"
}
(($# != 3 )) && { Usage; exit 1; }
for i in $(cat $2);do
        for j in $(cat $3);do
        echo $i $j
        done
done|tee a$$ b$$>/dev/null
same=$(awk '$1==$2 {print $1}' a$$)
X=$(echo "两个文件相同的行是:"echo $same|tr ' ' '\n')

diff1=$(awk '$1 != $2 {print $1}' b$$|uniq -d )
Y=$(echo "文件$2中存在而文件$3中不存在的行是:"
echo $same $diff1|tr ' ' '\n'|sort|uniq -u
echo "\n")


for n in $(cat $3);do
        for m in $(cat $2);do
        echo $n $m
        done
done|tee x$$ y$$>/dev/null
diff2=$(awk '$1 != $2 {print $1}' y$$|uniq -d )
Z=$(echo "在文件$3中存在而文件$2中不存在的行是:"
echo -n $diff2 $same|tr ' ' '\n'|sort|uniq -u
echo "\n")

while getopts xyz arg
do
        case $arg in
        x)      echo $X|tr ' ' '\n';;
        y)      echo $Y|tr ' ' '\n';;
        z)      echo $Z|tr ' ' '\n';;
        \?)     echo "选项错误"; Usage;;
        esac
done
rm a$$ b$$ x$$ y$$
阅读(806) | 评论(0) | 转发(0) |
0

上一篇:Grep学习笔记

下一篇:SHELL编程基础(1)

给主人留下些什么吧!~~