首页 > 解决方案 > 不改变顺序的连续行

问题描述

cat file1
4    
8     
7  

cat file2
4.999286    12.669064   0.000000  
5.999343    12.753258   0.000000  
6.999401    12.654514   0.000000  
7.999458    12.774485   0.000000  
8.999515    12.662147   0.000000  
9.999572    12.700071   0.000000  
10.999629   12.717721   0.000000  

我正在寻找具有相同顺序和另外两个连续行的 grep file1。我试过这个:

grep -A 2 -Ff file1 file2

我想要这样的输出:

4.999286    12.669064   0.000000  
5.999343    12.753258   0.000000  
6.999401    12.654514   0.000000  
8.999515    12.662147   0.000000  
9.999572    12.700071   0.000000  
10.999629   12.717721   0.000000  
7.999458    12.774485   0.000000  
8.999515    12.662147   0.000000  
9.999572    12.700071   0.000000 

标签: awkgrep

解决方案


这可能对您有用(GNU grep并行):

parallel -k grep -A2 '^{}' file2 :::: file1

使用 file1 作为输入并行 Grep file2 多次并保持原始顺序。

或者,如果您愿意,例如:

parallel -a file1 -k grep -A2 '^{}' file2

或者:

cat file1 | parallel -k grep -A2 '^{}' file2

推荐阅读