免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: bjgirl
打印 上一主题 下一主题

[原创]比较两个文本文件的程序  关闭 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2004-07-27 12:57 |只看该作者

[原创]比较两个文本文件的程序

cat dfile1
#!/bin/ksh
#scriptname:dfile

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>a$$
#same=$(awk '$1==$2 {print $1}' a$$ )
same=$(awk '$1==$2 {print $1}' a$$|uniq)
X=$(echo 两个文件相同的行是:
echo $same|tr ' ' '\n')

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


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

while getopts yz: 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$$

我把程序改了一下,因为你这个程序在a.txt 为1行:a且b.txt为1行:b时
程序无法识别

论坛徽章:
0
22 [报告]
发表于 2004-08-21 18:54 |只看该作者

[原创]比较两个文本文件的程序

好,收下!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP