找出两文件中相同的行,两文件不同的行,文件1有文件2没有的行
2012-09-17 16:20
369 查看
删除两文件中相同的行,列出两个文件中不同的行:
cat 09-07_as_route 09-14_as_route | sort | uniq -u | sort -n -
或
awk '{print}' 09-07_as_route 09-14_as_route | sort | uniq -u | sort -n
注: 这两个文件09-07_as_route 09-14_as_route 都是排序去重后处理过的。
找出文件文件2(09-14_as_route)中有,文件1(09-07_as_route)中没有的那些行:
awk 'NR==FNR{a[$0]=1}NR>FNR{if(a[$0]!=1)print}' 09-07_as_route 09-14_as_route
或:
grep -vf 09-07_as_route 09-14_as_route
或
grep -wvf 09-07_as_route 09-14_as_route
解释:
NR==FNR{a[$0]=1}这句的意思是读取第一个参数(文件)内容,把里面的内容存到a变量中,并赋值为1
NR>FNR{if(a[$0]!=1)print}这句就是读取第二个参数(文件)内容,如果文件内容在a数组里面没有值,那么就打印!
找出文件1和文件2中相同的行:
cat 09-07_as_route 09-14_as_route | sort | uniq -d | sort -n
或
grep -f 09-07_as_route 09-14_as_route 或 grep -f 09-14_as_route 09-07_as_route
也可以使用comm,但使用comm比较的结果不准。????
可参考:/article/11373425.html
comm - 12 就只显示在两个文件中都存在的行;
comm - 23 只显示在第一个文件中出现而未在第二个文件中出现的行;
comm - 123 则什么也不显示。
例如:找出a.txt文件有而b.txt文件中没有的放在c.txt文件中
[cpp] view plaincopy #!/bin/sh
# author by tianmo
# date 2011-11-21 20:33
#BEGIN
cat a.txt | sort | uniq | sort > a_u.txt
cat b.txt | sort | uniq | sort > b_u.txt
comm -23 a_u.txt b_u.txt > c.txt
# END
awk 用法例举:
变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
NF是域的个数
$NF 是输出最后一个域的内容
NR和FNR的不同
NR:表示当前记录数
FNR:也表示当前记录数,但是FNR的作用域只在一个文件内.如果重新打开文件,FNR会从1开始.
cat 09-07_as_route 09-14_as_route | sort | uniq -u | sort -n -
或
awk '{print}' 09-07_as_route 09-14_as_route | sort | uniq -u | sort -n
注: 这两个文件09-07_as_route 09-14_as_route 都是排序去重后处理过的。
找出文件文件2(09-14_as_route)中有,文件1(09-07_as_route)中没有的那些行:
awk 'NR==FNR{a[$0]=1}NR>FNR{if(a[$0]!=1)print}' 09-07_as_route 09-14_as_route
或:
grep -vf 09-07_as_route 09-14_as_route
或
grep -wvf 09-07_as_route 09-14_as_route
解释:
NR==FNR{a[$0]=1}这句的意思是读取第一个参数(文件)内容,把里面的内容存到a变量中,并赋值为1
NR>FNR{if(a[$0]!=1)print}这句就是读取第二个参数(文件)内容,如果文件内容在a数组里面没有值,那么就打印!
找出文件1和文件2中相同的行:
cat 09-07_as_route 09-14_as_route | sort | uniq -d | sort -n
或
grep -f 09-07_as_route 09-14_as_route 或 grep -f 09-14_as_route 09-07_as_route
也可以使用comm,但使用comm比较的结果不准。????
可参考:/article/11373425.html
comm - 12 就只显示在两个文件中都存在的行;
comm - 23 只显示在第一个文件中出现而未在第二个文件中出现的行;
comm - 123 则什么也不显示。
例如:找出a.txt文件有而b.txt文件中没有的放在c.txt文件中
[cpp] view plaincopy #!/bin/sh
# author by tianmo
# date 2011-11-21 20:33
#BEGIN
cat a.txt | sort | uniq | sort > a_u.txt
cat b.txt | sort | uniq | sort > b_u.txt
comm -23 a_u.txt b_u.txt > c.txt
# END
awk 用法例举:
变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
NF是域的个数
$NF 是输出最后一个域的内容
NR和FNR的不同
NR:表示当前记录数
FNR:也表示当前记录数,但是FNR的作用域只在一个文件内.如果重新打开文件,FNR会从1开始.
相关文章推荐
- 有十二个球,大小形状相同。其中一个重量与其他十一个不同,现在要求用一没有砝码的天平称三次找出那个球,并确定特殊球是轻还是重
- 找出两个文件内容的相同与不同
- JAVA两个数组间元素的比较(找出相同或者不同元素)
- 一个天平,12个大小,外观相同的球,一个球的重量与其他的不同,称3次找出问题小球
- 网站根目录下没有正确的DNT.config文件 (不同类型错误更新中)
- DUPLICATE数据库到不同的机器时要将备份文件放于相同目录。
- mysql两个表结构相同,如何找出它们的不同记录方法[left join].
- 海量数据处理面试题(1) 找出两文件种包含的相同的url
- java找出2个集合或数组相同和不同的元素(以及去除List中的重复元素)
- 两个大文件找出相同的一条记录
- linux 找出两个txt文件中内容不同的部分并输出
- java List Map数据对比 找出相同和不同的内容
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- JAVA两个数组间元素的比较(找出相同或者不同元素)
- EXCELL中怎么将两列数据对比,找出相同的和不同的数据?
- 从Excel文件中找出在TXT文件中没有出现的 行之_代码片段
- joj 2653 不同的数 从2*n中找出不相同的两个数
- 悬而未决:取得二个相同目录下不同修改日期的所有文件及全不覆盖复制
- 有2.5亿个整数存放在一个文件中,(已知内存容量没有此文件大)如何判断出这个文件中有多少个不相同的数。
- 找出两个文件之间的不同