2개의 파일에서 데이터 추출

2개의 파일에서 데이터 추출

두 개의 파일이 있는데 첫 번째 파일에는 필드가 1개만 있고 두 번째 파일에는 첫 번째 파일보다 더 많은 줄이 있으며 각 줄에는 서로 다른 필드가 있습니다.

파일 1:

5
15
20

파일 2:

3
5
O  1.25  2.30  3.75 
H  1.55  2.45  3.80
H  1.65  2.50  3.90
3
10
O  1.49  2.90  3.52
H  1.89  2.08  3.05
H  1.90  2.18  3.28
3
15
O  1.09  2.29  3.10
H  1.30  2.49  3.69
H  1.54  2.05  3.01
3
20
O  1.91  2.31  3.98 
H  1.64  2.96  3.04
H  1.07  2.49  3.49

파일 2에는 주기적인 루프가 있으며, 첫 번째 줄은 숫자 3이고, 두 번째 줄에는 5,10,15,20, ...과 같은 숫자가 표시되고 4개의 필드가 있는 3줄이 표시됩니다.

두 파일을 비교하고 동일한 번호가 있을 때 데이터를 저장하고 싶습니다. 예를 들어 파일 1에서 첫 번째 필드는 5이고 파일 2의 데이터를 인쇄하면 됩니다!

파일 1을 입력으로, 파일 2에 해당하는 데이터를 추출해야 하며 출력은 다음과 같습니다.

3
5
O  1.25  2.30  3.75
H  1.55  2.45  3.80
H  1.65  2.50  3.90
3
15
O  1.09  2.29  3.10
H  1.30  2.49  3.69
H  1.54  2.05  3.01
3
20
O  1.91  2.31  3.98 
H  1.64  2.96  3.04
H  1.07  2.49  3.49

어떻게 그런 결과를 얻을 수 있습니까? FNR==NR인 경우 이전 필드를 인쇄하고 FNR==NR을 인쇄한 후 다음 세 필드를 인쇄합니다. 그것들은 서로 관련되어 있기 때문에 갖고 싶습니다. 정말 고마워요, 레일라

답변1

당신은 이것을 할 수 있습니다 awk:

awk 'FNR==NR{
     a[$1];next
}
(FNR%10==3 && $1 in a){
     nr=FNR+9
}
(FNR<=nr || nr==""){
     print
}' file1 file2

여기서는 각 줄 뒤에 빈 줄이 있다고 가정합니다.

관련 정보