码迷,mamicode.com
首页 > 系统相关 > 详细

Linux文本比较-diff&awk

时间:2014-11-05 18:56:51      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   使用   sp   strong   文件   

最近为了完成工作,需要将两个文件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.file
mv 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

标签:style   blog   http   io   color   使用   sp   strong   文件   

原文地址:http://www.cnblogs.com/fengxm/p/4074126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!