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
你算问对人咯。使用linux的comm如果是WIN下的文件,注意先转换换行符号!!!
先对文件进行排序去重复:sort filename1 |uniq>filename1-sorted
然后对第2个文件也排序去重复并管道使用comm 找出符合你要求的:
共同拥有的行:sort filename2|uniq|comm -12 - filename1-sorted>共同拥有的
文件 filename1-sorted独有的: sort filename2|uniq|comm -13 - filename1-sorted>filename1-sorted独有
文件 filename2独有的: sort filename2|uniq|comm -23 - filename1-sorted>filename2独有。
赶紧给分,哈哈!
用comm相对比较简单,也可以用 awk做:
共同拥有的:
gakw 'ARGIND==1{a[$1]=$1} ARGIND>1{if(a[$1]!="") print $0}' file1 file2>共同拥有
gakw 'ARGIND==1{a[$1]=$1} ARGIND>1{if(a[$1]=="") print $0}' file1 file2>file2独有
gakw 'ARGIND==1{a[$1]=$1} ARGIND>1{if(a[$1]=="") print $0}' file2 file1>file1独有
直接使用输出重定向到你想要的文件即可,不过将所有的控制到信息输出到一个文本文件,只有两个办法:①:修改所有程序的输出路径:printf函数 echo.....几乎是不可能完成的任务
②:修改linux的标准输出路径:
句柄 句柄的数字代号 描述
STDIN 0 键盘输入
STDOUT1 输出到命令提示符窗口
STDERR2 错误输出到命令提示符窗口
将标准输出 标准输出的默认设置更改为你要保存的文件,这样就会控制台的信息就会输出到你指定的文件里面
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)