经常遇到要比较两个文本文件的问题,文件行数很多,用excel在自己电脑上做会很卡,想在linux服务器上做。比如文件1和文件2都是每行一串字符,要选出相同的行输出到same.txt,文件1中有,文件2中没有输出到_1_not_in_2.txt,文件2中有,文件1中没有的输出到_2_not_in_1.txt。用什么办法可以做到,比如脚本,是否可以在while read line的循环中用一行命令实现呢?
不要输出别的东西,也不要实时查看,我我是要处理大文件,直接输出到3个文件中,我只要这3个文件就行了,最好在循环中每次处理就可以分别输出,也不用分三次处理,这样效率高些
diff -u a.txt b.txt|grep '^-' |grep -v '^---' > '_1_not_in_2.txt'
diff -u a.txt b.txt|grep '^+' |grep -v '^+++' > '_2_not_in_1.txt'
diff -u a.txt b.txt|grep '^ ' > same.txt
这是区别出三个文件的命令,把上面的命令运用到脚本里面就可以高效使用了。
脚本:
[root@bogon diff]# sh diff.sh
Please input a name for file1 :file1
Please input a name for file2 :file2