열의 중복 값 병합 [닫기]

열의 중복 값 병합 [닫기]

이와 같은 파일이 주어지면

value,value,value,value
value1,value1,value,value1
value2,value2,value,value2

어떻게 하면 이것을 다음과 같이 바꿀 수 있습니까?

value,value,value,value
value1,value1,    ,value1
value2,value2,    ,value2

기본적으로 3열의 중복 값을 병합하여 첫 번째 행에 표시하고 다른 데이터도 csv에 기록으로 유지합니다.

나는 그것을 시도했지만 cat file | sort -u -t, -k3작동하지 않습니다.

답변1

3열뿐만 아니라

$ cat file.csv
aaa,bbb,ccc,ddd
aat,bbk,ccc,ddd
aaa,bbk,cc3,dd4
aaa,bbb,ccc,ddd

$ awk '
      BEGIN {FS = OFS = ","}
      NR == 1 {for (i=1; i<=NF; i++) prev[i] = $i}
      NR > 1 {
          for (i=1; i<=NF; i++)
              if ($i == prev[i])
                  gsub(/./, " ", $i)
              else
                  prev[i] = $i
      }
      1
  ' file.csv
aaa,bbb,ccc,ddd
aat,bbk,   ,
aaa,   ,cc3,dd4
   ,bbb,ccc,ddd

답변2

그리고:

perl -F, -e '
    do{ $col = $F[2]; print; next } if $.==1;
    $F[2] = " "x4 if $F[2] eq $col;
    print join ",", @F
' file

그리고:

awk '
    BEGIN{FS=OFS=","}
    {if (NR==1) col=$1;
    else if($3 == col) $3="    "}
    1
' file

산출

value,value,value,value
value1,value1,    ,value1
value2,value2,    ,value2

관련 정보