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