짝수 행에 대해서만 다른 파일에서 파일의 특정 열을 뺍니다.

짝수 행에 대해서만 다른 파일에서 파일의 특정 열을 뺍니다.


반복되는 일반 구조를 가진 두 개의 긴 파일인 File1:
AA 100
BB 10
File2가 있습니다 .
AA 100
BB 1

File1의 File2 짝수 행에서 열 2를 빼고 다른 정보는 그대로 유지/인쇄하고 싶습니다.
원하는 출력:
AA 100
BB 9

이를 위해 나는 다음과 같이 썼습니다 awk.
awk '{a=$2;getline<f;$2-=a}!(NR % 2)' f=File1 File2

결과는 다음과 같습니다.
BB 9
뺄셈을 잘 수행하고 결과를 인쇄하지만 다른 데이터를 추가하는 데 문제가 있습니다.

빼는 동안 다른 데이터를 어떻게 인쇄할 수 있나요?

답변1

$ paste file1 file2 | awk '{print $1, $2 - (NR%2 ? 0 : $4)}'
AA 100
BB 9

또는 awk 전용 솔루션을 원하는 경우:

$ awk 'NR==FNR{if (!(NR%2)) a[NR]=$2; next} {$2 -= a[FNR]} 1' file2 file1
AA 100
BB 9

getline이러한 목적 으로 사용을 고려하고 계시다면 읽어보시기 바랍니다.http://awk.freeshell.org/AllAboutGetline그래서 당신은 이것을 할 때의 문제를 이해합니다.

답변2

이 같은?

awk '{a=$2;getline<f;(NR%2)?$2:$2-=a;print}' f=File1 File2

관련 정보