첫 번째 열을 세로로 유지하면서 서식 지정

첫 번째 열을 세로로 유지하면서 서식 지정

grep이나 sed를 사용한지 꽤 시간이 지났지만 이 정도는 가능할 것 같습니다. 첫 번째 열을 유지/복제하면서 csv를 가져와 수직으로 형식을 지정하려면 어떻게 해야 합니까?

Ex.
Input:
A, 1, 2, 3
B, 1, 2, 3
C, 1, 2, 3

Output:
A, 1
A, 2
A, 3
B, 1
B, 2
B, 3
C, 1
C, 2
C, 3

답변1

sed를 사용 하거나 의 일부 버전을 사용하여 수행할 수 있지만 를 grep사용하면 awk수행하려는 작업을 매우 우아하게 표현할 수 있습니다.

#!/bin/sh

awk -F, '
    BEGIN {
        OFS=","
    }
    {
        for (i=2; i<=NF; i++) {
            print $1, $i
        }
    }
' <<EOF
A, 1, 2, 3
B, 1, 2, 3
C, 1, 2, 3
EOF

스크립트가 파일 이름이나 표준 입력을 사용하도록 하려면 "여기 문서"( <<파일의 끝까지 모든 내용)를 다음으로 바꾸십시오.

"$@"

답변2

해결책 sed.

sed -r ':a;s/([A-Z],)( [0-9]),( [0-9])/\1\2\n\1\3/;ta' <<<'A, 1, 2, 3
B, 1, 2, 3
C, 1, 2, 3'
A, 1
A, 2
A, 3
B, 1
B, 2
B, 3
C, 1
C, 2
C, 3

관련 정보