Chinaunix

标题: 一个问题~ [打印本页]

作者: aluoyeshi    时间: 2010-04-26 10:47
标题: 一个问题~
#cat file1
red pass 0
blue fail 1
yellow warning 2
red pass 0
blue fail 1
brown error 3
yellow warning 2
...

#cat file2
red ****************
blue ****************
brown ***************


想要找出file1中的第一列在file2中不匹配的内容,并打印出来,结果应该是:
yellow

用awk和sed分别如何实现呢?
作者: where27    时间: 2010-04-26 10:52
回复 1# aluoyeshi
  1. awk 'NR==FNR{a[$1];next}!($1 in a){print $1}' file2 file1
复制代码

作者: ywlscpl    时间: 2010-04-26 10:52
awk 'NR==FNR{a[$1]=$0}NR>FNR&&!b[$1]++&&$1 in a&&$0!=a[$1]' file2 file1
作者: lkk2003rty    时间: 2010-04-26 10:55
awk 'NR==FNR{a[$1]=1} NR>FNR{if(!($1 in a)) print $1}'  file2 file1 | uniq
作者: ywlscpl    时间: 2010-04-26 10:56
只打印第一列
awk 'NR==FNR{a[$1]=$0}NR>FNR&&!b[$1]++&&$1 in a&&$0!=a[$1]{print $1}' file2 file1
作者: blackold    时间: 2010-04-26 10:57
  1. grep -Fxvf <(cut -d\  -f1 file2|sort -u) <(cut -d\  -f1 file1|sort -u)
复制代码

作者: ywlscpl    时间: 2010-04-26 10:58
本帖最后由 ywlscpl 于 2010-04-26 10:59 编辑

看来我理解错了,我以为要的是对应关系不同的,原来是要file1第一列不存在于file2第一列的


awk 'NR==FNR{a[$1]}NR>FNR&&!b[$1]++&&!($1 in a){print $1}' file2 file1
作者: where27    时间: 2010-04-26 10:59
回复 6# blackold


    不错,grep用到极致了
作者: 709101040516    时间: 2010-04-26 11:03
擦,连grep 都想不到。要我我也用grep ,哼···
作者: aluoyeshi    时间: 2010-04-26 11:06
回复 2# where27


    不错
作者: where27    时间: 2010-04-26 11:07
回复 9# 709101040516


    事后诸葛亮,事前猪一样
作者: aluoyeshi    时间: 2010-04-26 11:10
回复 6# blackold


    这个强悍,研究一下
作者: aluoyeshi    时间: 2010-04-26 11:14
回复 7# ywlscpl


    awk 'NR==FNR{a[$1]}NR>FNR&&!b[$1]++&&!($1 in a){print $1}' file2 file1

这里的 !b[$1]++ 是什么意思阿?
作者: iori809    时间: 2010-04-26 11:14
回复 11# where27


    这个你冤枉他了~他真会。只不过他跟黑哥的区别是他只会grep~哈哈。搞笑一下啊。他确实会这个
作者: where27    时间: 2010-04-26 11:16
回复 13# aluoyeshi


    就是如果重复出现$1,就不执行后面的动作
作者: aluoyeshi    时间: 2010-04-26 11:22
回复 15# where27


    还能这样用啊,学习了,多谢
作者: Shell_HAT    时间: 2010-04-26 11:44
回复 13# aluoyeshi


参考:http://bbs.chinaunix.net/viewthread.php?tid=1672726#pid11904888




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2