shell对比文件
使用shell对比两个文件,删除相同的部分,并把不同的导入到另外一个文件里去.
方法1:
awk '{print NR, $0}' file1 file2 |sort -k2|uniq -u -f 1|sort -k1|awk '{print $2}' >> file1
方法2:
awk '{print $0}' file1 file2 |sort|uniq -u >> file1
awk就是文本的解释器和过滤器.awk把每一行看成是一个记录(record),每个记录使用分隔符(默认是空格)把每条记录分成若干域.awk内置参 数$0表示整行,$1、$2...分别表示各域,内置参数NR,表示记录的计数,awk '{print NR, $0}' file1 file2表示依次读取file1 file2,打印出每行,并且在前面添加行号.
命令sort,就是对行进行排序,参数-k表示根据各行的第几个参数关键字开进行排序,这里的-k2表示根据第二个关键字开始进行排序.
命令uniq,进行报告或者忽略重复的行,参数-u,表示只是打印出唯一的行(unique lines),-f表示忽略的每行的前n个域的比较.
ps:这里还要再说句,>这是替换,>>这是增加,不要整错了.
方法1:
awk '{print NR, $0}' file1 file2 |sort -k2|uniq -u -f 1|sort -k1|awk '{print $2}' >> file1
方法2:
awk '{print $0}' file1 file2 |sort|uniq -u >> file1
awk就是文本的解释器和过滤器.awk把每一行看成是一个记录(record),每个记录使用分隔符(默认是空格)把每条记录分成若干域.awk内置参 数$0表示整行,$1、$2...分别表示各域,内置参数NR,表示记录的计数,awk '{print NR, $0}' file1 file2表示依次读取file1 file2,打印出每行,并且在前面添加行号.
命令sort,就是对行进行排序,参数-k表示根据各行的第几个参数关键字开进行排序,这里的-k2表示根据第二个关键字开始进行排序.
命令uniq,进行报告或者忽略重复的行,参数-u,表示只是打印出唯一的行(unique lines),-f表示忽略的每行的前n个域的比较.
ps:这里还要再说句,>这是替换,>>这是增加,不要整错了.
评论: