다음과 같이 탭으로 구분된 파일이 있습니다.
NZ_CP023599.1 WP_003911075.1 302845 305406
NZ_CP023599.1 WP_003898428.1 471171 472583
NZ_CP023599.1 WP_003402248.1 534387 535157
NZ_CP023599.1 WP_003402301.1 552556 553950
NZ_CP023599.1 WP_003402318.1 558837 559697
다음 행의 세 번째 열에 있는 숫자에서 각 행의 네 번째 열에 있는 숫자를 뺀 다음 다음 행의 차이를 다섯 번째 열에 인쇄해야 합니다.
출력은 다음과 같습니다.
NZ_CP023599.1 WP_003911075.1 302845 305406
NZ_CP023599.1 WP_003898428.1 471171 472583 165765
NZ_CP023599.1 WP_003402248.1 534387 535157 61804
NZ_CP023599.1 WP_003402301.1 552556 553950 17399
NZ_CP023599.1 WP_003402318.1 558837 559697 4887
이 문제를 해결하기 위해 awk를 어떻게 사용할 수 있습니까?
답변1
다음과 같이 이 작업을 수행할 수 있습니다. 첫 번째 행을 제외하고 빼기를 연기하지만 마지막 열 값을 후속 행의 입력으로 가져옵니다.
awk -F'\t' 'BEGIN { OFS = FS } NR == 1 { last = $4; print; next }{ $5 = $3 - last; last = $4 }1' file
답변2
awk -F\\t '{ if (length(prev4)>0) { col5 = FS ($3-prev4) }; print $0 col5; prev4 = $4 }' InputFile