저는 원래 이 질문과 답변을 토대로 만들었습니다(awk를 사용하여 다른 열의 값을 기반으로 한 열의 값 합계) 하지만 분명히 새로운 질문을 해야 합니다.
여러 열이 포함된 tsv 파일이 있습니다. 두 번째 열이 비어 있으면 열 3의 해당 값을 합산하고 싶습니다. 열 2가 비어 있지 않으면(내용이 행마다 다름) 열 3을 만들고 싶습니다. 예:
ColumnA ColumnB ColumnC
One 10
Little STH 15
Red XIV 55
Car 20
출력은 다음과 같습니다: 30 및 70 가능합니까? 비어 있을 때 계산하는 것과 비어 있지 않을 때 계산하는 것을 구별할 수 있습니까?
도움을 주셔서 정말 감사합니다, 벤
답변1
충족하려는 조건으로 인덱스된 awk 배열을 사용한 다음 배열의 모든 값을 인쇄할 수 있습니다. 예를 들면 다음과 같습니다.
awk 'BEGIN {FS = "\t"}; NR>1 {sum[$2!=""] += $3}; END{for (i in sum) print i, sum[i]}' test.tsv
배열 에는 조건을 충족하지 않는 값의 합계 또는 조건을 충족하는 값의 합계라는 두 sum
가지 값이 포함됩니다 .sum[false]
sum[0]
sum[true]
sum[1]
예제를 사용하여 출력합니다.
0 30
1 70
답변2
그것은 마치
awk 'BEGIN { FS=OFS="\t" }
NR > 1 && $2 == "" { empty += $3 }
NR > 1 && $2 != "" { full += $3 }
END { print "Empty", empty; print "Text", full }' input.tsv