다른 열의 값을 기반으로 CSV 파일의 행 복사

다른 열의 값을 기반으로 CSV 파일의 행 복사

800줄이 넘는 파일이 있습니다. 각 행에는 우리가 측정해야 하는 특성을 가진 특정 수의 개인이 있습니다(n = 3, 5 또는 10). 측정해야 하는 숫자(n)를 기반으로 각 파일이 자체 행을 갖도록 파일을 확장하고 싶습니다.
예를 들어:

Row     Who/What        Description     n
8001    Maize line      Control         3

될 것입니다:

Row     Who/What        Description     n
8001    Maize line      Control         3
8001    Maize line      Control         3
8001    Maize line      Control         3

저는 Unix에 능숙하지는 않지만(아직 배우고 있습니다!) txt/csv 파일을 읽은 다음 네 번째 열의 n을 기반으로 복사해야 한다는 것을 알고 있습니다. 열 헤더를 반복할 필요는 없으며 단지 정리를 위한 것입니다. 누군가 나를 도와줄 수 있나요?

답변1

다음을 사용해 보세요 awk:

awk 'NR==1{ print; next } { repeat=$NF; while (repeat--) print } ' infile

제공한 예제 파일은 .csv 파일이 아니며 쉼표로 구분되어야 합니다. -F입력 파일에 사용되는 구분 기호를 지정하려면 awk 옵션을 사용해야 합니다.

awk -F, 'NR==1{ print; next } { repeat=$NF; while (repeat--) print } ' infile

의견에 묻는 질문에 답하려면 다음을 수행하십시오.

awk 'NR==1{ print; next } { bakup=$1; repeat=$NF; 
            while (repeat--) { $1=bakup"."++dup; print }; dup=0 }' infile

관련 정보