我有一个CSV,是10,000行左右。所有一个字段
.000.000.000
.111.111.111
etc
我需要检查以上的主列表400,000左右的主列表,再次所有一个字段
.0
.1
.3
and up
最好的方法是什么?我尝试了-f的GREP,但我觉得它没有做任何事情
grep -f [file1][file2]
它没有返回结果,但我也没有提供我认为需要的输出。
我也尝试了一个尴尬,但这只是我发现的东西,并不真正理解。因此,再次没有得到我想要的结果。
awk -F, 'NR>1&&NR==FNR{a[$1];next}FNR>1&&($1 in a){print $1,"in both!"}'
如果可能的话,我想将其制作为脚本,但如果不是越简单的话。我确实在做这项检查以进行勤奋,但是我90%肯定我的小列表在大文件中不会匹配。但是在检查情况下,我需要某种确认。
awk '{if(NR==FNR){a[$0]++} else {if (a[$0])print "in both " $0}}' file1 file2
-
if(NR==FNR)
-检查是否从第一行读取行,插入以用作字典中的键,并增加此键a[$0]++
的值($0
-Key,++
INC值( -
else
if (a[$0])
检查字典是否包含一个名为$0
的键(检查第一个文件中是否存在行( - 如果线路存在
print "in both " $0
(在"同时"字符串中打印和两者中的值(
grep
似乎应该起作用。看起来像 grep -Fx -f [searchfile] [matchfile]
(-f表示字符串不匹配,-x强迫整个行应匹配(应该做您想要的吗?
,例如
$ cat grepsearch.txt
000.000
111.111
222.333
$ cat greptest.txt
1
2
41
5
235
15
15
000.000.00
431
5341
643
16
43
000.000
3251235
431
5431
543
1
543
15341
111.111
435143
54
35
43
11111
1111111
11111
111111
0000000
00000
222.333
432
145
3415
431
543
$ grep -F -f grepsearch.txt greptest.txt
000.000
111.111
222.333
没有-f/-x的注意.
的s被解释为正则:
$ grep -f grepsearch.txt greptest.txt
000.000
111.111
1111111
0000000
222.333