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
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
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