30개의 열과 1000개의 행으로 구성된 CSV 파일을 정리하려고 합니다. 첫 번째 열이 동일하면 세로선(|)을 사용하여 행을 열별로 연결하고 싶습니다.
입력하다:
3,XX,YY,123,1234,MM,-,,DD,1235,XC
3,XM,YM,123,1234,MD,-,A,FD,1233,XC
3,XN,YN,123,1234,MM,-,,ED,1235,XC
산출:
3,XX|XM|XN,YY|YM|YN,123,1234,MM|MD,-,A,DD|FD|ED,1235|1233,XC
그래서 저는 단지 다른 값들을 연결하고 싶습니다.
나는 이것을 본 적이 있다철사하지만 내 문제에는 도움이 되지 않나요?
답변1
왜 안 돼철사도움이 되었나요? 약간의 수정 후 사용해 보세요.
awk -F, '
function p(n,A) {s = n
for (i=2; i<=NF; i++) {s = s FS A[i]
A[i] = $i
}
if (n) print s
}
$1==n {for (i=2; i<=NF; i++) if (A[i] !~ "[|]*" $i "[|]*") A[i] = A[i] "|" $i
next
}
{p(n,A)
n = $1
}
END {p(n,A)
}
' file
3,XX|XM|XN,YY|YM|YN,123,1234,MM|MD,-,|A,DD|FD|ED,1235|1233,XC