텍스트 파일 데이터를 테이블로 변환 [닫기]

텍스트 파일 데이터를 테이블로 변환 [닫기]

2개의 열이 있는 텍스트 파일이 있는데 이를 테이블로 변환하고 싶습니다. 아래 이미지는 표가 아닌 문서에 보이는 것과 같습니다. 서식은 질문을 게시할 때 모든 텍스트를 한 줄에 넣는 것입니다.

파일의 데이터는 다음과 같습니다.

name: name1
copies: 3
copy1: name1copy1
copy2: name1copy2
copy3: name1copy3
name: name2
copies: 1
copy1: name2copy1
name: name3
copies: 2
copy1: name3copy1
copy2: name3copy2 

이것이 내가 얻고 싶은 것입니다:

name,copies,copy1,copy2,copy3  
name1,3,name1copy1,name1copy2,name1copy3
name2,1,name2copy1,bull,null
name3,2,name3copy1,name3copy2,null  

여기에서 Excel로 가져올 수 있습니다.

답변1

이는 다차원 배열에 GNU awk를 사용합니다. 모든 데이터를 한 번에 읽고 END 블록에 출력을 내보냅니다. 이것은 "script.awk"입니다

BEGIN {FS = ": "}

!($1 in head) {head[$1] = h++}
$1 == "name"  {name = $2}
{data[name][$1] = $2}

END {
    PROCINFO["sorted_in"] = "@val_num_asc"

    # print the header
    sep=""
    for (item in head) {
        printf "%s%s", sep, item
        sep = ","
    }
    printf "\n"

    # print the data
    for (name in data) {
        sep=""
        for (item in head) {
            printf "%s%s", sep, data[name][item]
            sep = ","
        }
        printf "\n"
    }
}

그 다음에:

$ gawk -f script.awk file
name,copies,copy1,copy2,copy3
name1,3,name1copy1,name1copy2,name1copy3
name2,1,name2copy1,,
name3,2,name3copy1,name3copy2,

관련 정보