【awk】找出两个文件中的不同值

https://blog.csdn.net/weixin_33534991/article/details/116683524

 

awk 'NR==FNR{a[$0]}NR>FNR{ if(!($1 in a)) print $0}' file1 file2 找出文件2中跟文件1不同的值 

 

三:awk实现

awk应该算是shell常用命令中的泰山北斗了,几乎很多其他命令能完成的工作,awk都能完成(只不过有些写起来可能比较复杂)。本例中也不例外:

awk 'NR==FNR{a[$0]++} NR>FNR&&!a[$0]' 1.txt 2.txt

找出两个文件之间的相同部分可以使用

awk 'NR==FNR{a[$0]++} NR>FNR&&a[$0]' 1.txt 2.txt

下面的两个语句也可以换成:

awk 'NR==FNR{a[$0]}NR>FNR{ if(!($1 in a)) print $0}' file1 file2 找出文件2中不同的值

awk 'NR==FNR{a[$0]}NR>FNR{ if($1 in a) print $0}' file1 file2 找出两文件中相同的值

注:

1、awk实现时,并不需要事先对两个文件进行sort排序,

2、注意和上两个命令中两个文件的放置顺序是不同的。三种实现方法,文件的顺序一定颠倒,颠倒了,效果就刚好想反了,就变成找出文件1中有文件2中没有的行了。

四、grep排序

grep -v -f 1.txt 2.txt

如grep -v -f 2017060614_bin.log /home/data/mysql/binlog/mysql-bin.index

/home/data/mysql/binlog/mysql-bin.009021

/home/data/mysql/binlog/mysql-bin.009022

grep常用用法

grep [-acinv] [--color=auto] '搜寻字符串' filename

选项与参数:

-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到 '搜寻字符串' 的次数

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

--color=auto :可以将找到的关键词部分加上颜色的显示喔!

 

posted @ 2023-01-09 15:14  新茶煮酒  阅读(380)  评论(0编辑  收藏  举报