(py27env) root@VM-0-5-ubuntu:~# cat b
prefix-patterna-suffix
prefix-pattern1-suffix
prefix-patternb-suffix
prefix-pattern2-suffix(py27env) root@VM-0-5-ubuntu:~# grep -f a b
prefix-pattern1-suffix
prefix-pattern2-suffix
文件大的时候性能会有点差,可以用python实现一个简单的grepf,性能好很多:
sess =set([])for line inopen(sys.argv[1]):
sess.add(line.strip())for line inopen(sys.argv[2]):if line.rstrip().split('\t')[3]in sess:print(line.rstrip())
注意grep -f会将a文件中的行认为是个正则,如果不想这么做,加上-F即可:
(py27env) root@VM-0-5-ubuntu:~# cat a
p.*n1
p.*n2(py27env) root@VM-0-5-ubuntu:~# grep -f a b
prefix-pattern1-suffix
prefix-pattern2-suffix(py27env) root@VM-0-5-ubuntu:~# grep -F-f a b(py27env) root@VM-0-5-ubuntu:~#
假设b文件有这么几行:
prefix-patterna-suffix
prefix-pattern1-suffix
prefix-patternb-suffix
prefix-pattern2-suffix
试试grep -f:
(py27env) root@VM-0-5-ubuntu:~# cat b prefix-patterna-suffix prefix-pattern1-suffix prefix-patternb-suffix prefix-pattern2-suffix (py27env) root@VM-0-5-ubuntu:~# grep -f a b prefix-pattern1-suffix prefix-pattern2-suffix
文件大的时候性能会有点差,可以用python实现一个简单的grepf,性能好很多:
sess = set([]) for line in open(sys.argv[1]): sess.add(line.strip()) for line in open(sys.argv[2]): if line.rstrip().split('\t')[3] in sess: print(line.rstrip())
注意grep -f会将a文件中的行认为是个正则,如果不想这么做,加上-F即可:
(py27env) root@VM-0-5-ubuntu:~# cat a p.*n1 p.*n2 (py27env) root@VM-0-5-ubuntu:~# grep -f a b prefix-pattern1-suffix prefix-pattern2-suffix (py27env) root@VM-0-5-ubuntu:~# grep -F -f a b (py27env) root@VM-0-5-ubuntu:~#