linux 比较文本内容,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.file

mv temp.file new.file

awk内置变量

变量名称

代表意义

ARGC

命令行变元个数

ARGV

命令行变元数组

FILENAME

当前输入文件名

FNR

当前文件中的记录号

FS

输入域分隔符,默认为一个空格

RS

输入记录分隔符

NF

当前记录里域个数

NR

到目前为止记录数

OFS

输出域分隔符

ORS

输出记录分隔符

$0

代表一整行的数据

awk内置的字符串函数

gsub(r,s)

在整个$0中用s代替r

gsub(r,s,t)

在整个t中用s替代r

index(s,t)

返回s中字符串t的第一位置

length(s)

返回s长度

match(s,r)

测试s是否包含匹配r的字符串

split(s,a,fs)

在fs上将s分成序列a

sprint(fmt,exp)

返回经fmt格式化后的exp

sub(r,s)

用$0中最左边最长的子串代替s

substr(s,p)

返回字符串s中从p开始的后缀部分

substr(s,p,n)

返回字符串s中从p开始长度为n的后缀部分

NR和FNR的区别

NR:当前记录数

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

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

linux grep,sed,awk和diff的使用

1:grep//显示行 # grep 'main' /home/myhome/a.c//将a.c含有main的行显示出来 # grep -v 'main' /home/myhome/a.c //显示除 ...

Linux实战教学笔记18:linux三剑客之awk精讲

Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...

程序猿必知必会Linux命令之awk

前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数 ...

【linux】linux命令grep + awk 详解

linux命令grep  +  awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...

Linux下Diff命令

一般正常比较两个文件用vimdiff,算是直接进入vim界面,如果比较两个文件夹下面的文件,可以用diff,注意,这里只会比较文件夹下面的同名文件,他会列出不一样的点. 参考Linux下Diff命令使 ...

(转)不看绝对后悔的Linux三剑客之awk实战精讲

原文:http://blog.51cto.com/hujiangtao/1923930 一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中 ...

Linux三剑客之awk

awk awk是linux下的一个命令,他对其他命令的输出,对文件的处理都十分强大,其实他更像一门编程语言,他可以自定义变量,有条件语句,有循环,有数组,有正则,有函数等.他读取输出,或者文件的方式是 ...

linux中diff命令用法

diff 命 令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版 本的diff还支持二进制文件.diff程 ...

Linux之sed,awk(流编辑器)

sed:  s----substitute(替换) 1. 文本替换(使用-i选项,可以将结果应用于原文件) many people在进行替换之后,借助重定向来保存文件(未使用-i选项): $ sed  ...

随机推荐

BestCoder Round #90

有生以来第一场在COGS以外的地方打的比赛.挂成dog了. 主要是没有经验,加之代码能力过弱.还有最后的瞎hack三次,Too Young Too Simple...... 言归正传. (抄一发题解先 ...

UI图标不用愁:矢量字体图标Font-Awesome

Font-Awesome,这个项目主要是css3的一个应用,准确的说是一段css,这里的把很多图标的东西做到了font文件里面,然后通过引用外部font文件的方式,来展现图标. Font Awesom ...

Spring AOP + AspectJ Annotation Example---reference

In this tutorial, we show you how to integrate AspectJ annotation with Spring AOP framework. In simp ...

Android非常有用的开源库介绍整理

Android开源库 自己一直很喜欢Android开发,就如博客副标题一样,我想做个好的App. 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 ...

CentOS安装VirtualBox增强工具

安装过程中出现错误: Bulding the VirtualBox Guest Additions Kernel modules failedYour system does not seem to  ...

Omi框架Store体系的前世今生

原文链接-https://github.com/AlloyTeam/omi Store 体系 先说说Store系统是干什么的!为什么要造这样一个东西?能够系统架构带来什么? 当我们组件之间,拥有共享的 ...

[自制操作系统] 原子操作&核间中断&读写锁&PRWLock

本文主要为读论文Scalable Read-mostly Synchronization Using Passive Reader-Writer Locks的记录. 并将其在JOS上实现.其中包括la ...

3.Properties文件的加载和使用

一.Properties简介 Properties 类继承自HashTable,提供的方法很像Map的实现类HashMap.它在 Java 编程的早期就有了,并且几乎没有什么变化.J2SE 的 Tig ...

SP3871 GCDEX - GCD Extreme

//author Eterna #define Hello the_cruel_world! #pragma GCC optimize(2) #include #inc ...

boost--时间处理

date_time库的时间功能位于名字空间boost::posix_time,它提供了微妙级别(最高可达纳秒)的时间系统,使用需要包含头文件"boost\date_time\posix_ti ...

你可能感兴趣的:(linux,比较文本内容)