shell file compare
#!/bin/bash # 如果之前存在common文件,将其先删除,后面重新生成 [ -e "common.txt" ]&&{ rm -f common.txt } [ "$#" != "2" ]&& { echo "input error" exit 0 } # 过滤文件中的空白行 sed '/^\s*$/d' $1 > uniq1.txt sed '/^\s*$/d' $2 > uniq2.txt # 递归遍历文件uniq1和uniq2,找出相同的部分写入到common文件中 for Text1 in `cat uniq1.txt` do for Text2 in `cat uniq2.txt` do if [ "$Text1" = "$Text2" ] then echo $Text2 >> common.txt fi done done Except=`sed 's/ /|/g' common.txt` # 输出只属于uniq1文件的内容 grep -vE "$Except" uniq1.txt > onlyinfile1.txt # 输出只属于uniq2文件的内容 grep -vE "$Except" uniq2.txt > onlyinfile2.txt # 删除uniq1和uniq2的临时文件 [ -e "uniq1.txt" ]&&{ rm -f uniq1.txt } [ -e "uniq2.txt" ]&&{ rm -f uniq2.txt }