열 1과 동일한 횟수만큼 행을 복사합니다.

열 1과 동일한 횟수만큼 행을 복사합니다.

줄을 복사하는 방법에 대한 몇 가지 질문이 있습니다. 파일의 첫 번째 필드에 있는 특정 횟수만큼 각 줄을 자동으로 복사하고 싶습니다. 두 개의 필드가 있는 큰 파일이 있습니다. 필드 1은 숫자이고 필드 2는 이와 관련된 정보입니다.

12     AAA
18     BBB
25     CCC
33     DDD

첫 번째 필드의 숫자와 동일한 숫자를 나타내도록 각 행을 복사하겠습니다. 그래서 저는 "12 AAA" 등의 12개 행을 원합니다.

vim에서 각 줄을 x번씩 수동으로 붙여넣을 수 있다는 것을 알고 있지만(복사 후 "12p") 대용량 파일의 경우 이는 많은 작업처럼 보입니다. 이것을 자동화할 수 있는 스크립트를 아는 사람이 있나요?

답변1

GNU awk 사용:

#!/usr/bin/gawk -f
{ 
    for (c=strtonum($1) ; c ; c--) 
        print
}

답변2

awkJigglyNaga 와 동일한 답변:

awk '{ c=0; while ($1>c++) print }' infile

답변3

또 다른 awk 솔루션:

<infile awk ' i=$1 { while(i--) print }' 

관련 정보