Chinaunix
标题:
请教一个数据匹配的问题
[打印本页]
作者:
pdzcowboy
时间:
2014-01-22 09:32
标题:
请教一个数据匹配的问题
我有两列数据如下:
124 A00300
125 A00221
126 A00265
127 A00229
128 C00420
129 C00225
130 C00224
131 C00287
132 C00290
133 C00262
134 A01644
135 A01686
136 A01675
137 A01628
138 A01616
139 A01701
140 E00007
141 E00102
142 E00053
143 E00013
144 E00120
145 E00028
146 E00093
147 E00008
148 D01510
我知道第二列的部分数据,如下:
A00265
C00420
C00262
A01616
E00053
E00028
D01510
D01346
D01364
D01499
J00171
C00213
C01893
请教有没有简单一点的方法,寻找给出的第二列数据对应的第一列的数据?
作者:
jason680
时间:
2014-01-22 09:39
本帖最后由 jason680 于 2014-01-22 09:40 编辑
回复
1#
pdzcowboy
1. grep
$ grep -f F1 F2
126 A00265
128 C00420
2. awk
$ awk 'FNR==NR{a[$2]=$1}NR>FNR{print $1,a[$1]}' F2 F1
A00265 126
C00420 128
$ cat F2
125 A00221
126 A00265
127 A00229
128 C00420
129 C00225
130 C00224
$ cat F1
A00265
C00420
作者:
HH106
时间:
2014-01-22 09:48
本帖最后由 HH106 于 2014-01-22 09:48 编辑
回复
1#
pdzcowboy
修改下2楼
grep -Ff f1 f2
awk 'NR==FNR{a[$2]=$1;next}{print $1,a[$1]}' f2 f1
作者:
Shell_HAT
时间:
2014-01-22 09:51
grep -xFf file1 file2
复制代码
作者:
rulebook
时间:
2014-01-22 09:53
grep -f i o | awk '{print $1}'
复制代码
作者:
zhaopingzi
时间:
2014-01-22 09:57
这种问题,论坛里很多啊
作者:
pdzcowboy
时间:
2014-01-22 10:02
谢谢各位了
作者:
li0924
时间:
2014-01-22 10:21
本帖最后由 li0924 于 2014-01-22 10:27 编辑
@HH106
@jason680
假如第2列在第1列没有对应的呢?这个你们没考虑。----
作者:
jason680
时间:
2014-01-22 11:05
回复
8#
li0924
Would you provide good idea for it? thank you!!!
作者:
pitonas
时间:
2014-01-22 11:11
谢谢各位了 {:2_172:}
作者:
pdzcowboy
时间:
2014-01-22 11:14
我按照grep -Ff file1name file2name执行,系统没报错,但是没有结果怎么?
捕获.PNG
(14.31 KB, 下载次数: 7)
下载附件
执行详情
2014-01-22 11:14 上传
回复
4#
Shell_HAT
作者:
li0924
时间:
2014-01-22 15:42
回复
9#
jason680
awk 'NR==FNR{a[$0]=1;next}a[$2]' F2 F1
复制代码
作者:
elu_ligao
时间:
2014-01-22 22:33
grep -f f2 f1
awk 'NR==FNR{a[$1]++;next}a[$2]' f2 f1
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2