首页 > 代码库 > Linux文本比较-diff&awk

Linux文本比较-diff&awk

最近为了完成工作,需要将两个文件A.old和A进行比较,然后将A中新增加的部分保存到A中,其他部分删除。经过查找相关资料,发现有两种比较好的方法。

1. 使用diff命令

diff old.file new.file | grep "^> " | sed s/> //g > temp.file #只存在于后面new.file文件中的内容保存到temp.file中mv temp.file new.file # 将temp.file中的内容覆盖new.file
sed s/^> //g # s表示进行替换,意思是将以"> "开头的符号全部替换为""sed s/要被替换的字符串/新的字符串/g 

 

2. 使用awk命令

awk NR==FNR{a[$0]}NR>FNR{if(!($1 in a)) print $0} old.file new.file > temp.filemv temp.file new.file
awk内置变量
变量名称代表意义
$0代表一整行的数据
NF每一行($0)拥有的字段总数
NR目前awk所处理的是"第几行"数据
FS目前的分割字符,默认是空格键

NR和FNR的区别

NR:当前记录数

FNR:当前文件的记录数,其作用域在一个文件内,重新打开文件,FNR重新从1开始。

两者的区别主要体现在awk操作文件数大于1时。

 

参考:http://bbs.chinaunix.net/thread-1155924-1-1.html

        http://bbs.chinaunix.net/thread-2309494-1-1.html

Linux文本比较-diff&awk