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