열을 기준으로 파일 범위 확장

열을 기준으로 파일 범위 확장

아래와 같이 시작 번호와 끝 번호가 있는 파일이 있습니다.

Start,end,code
43786,67883,avb
200,400,add
12,14,adf

그러나 시작과 끝 사이의 모든 숫자가 해당 코드로 작성되도록 다시 작성해야 합니다.

43786,Avb
43787,avb
43788,avb
43789,avb

마지막 67883까지 avb가 범위 내에 있고 계속됩니다.

200,add
201,add
202,add 

답변1

다음과 같은 것으로 충분합니다.

awk 'BEGIN{FS=OFS=","}{for(i=$1;i<=$2;i++) print i,$3}' input_file > output_file

파일에 인쇄할 필요가 없는 헤더가 있는 경우:

awk 'BEGIN{FS=OFS=","}NR>1{for(i=$1;i<=$2;i++) print i,$3}' input_file > output_file

답변2

perl -F, -lane '$. > 1 and print "$_,$F[2]" for $F[0] .. $F[1]'

perl -F, -lane '$. == 1 && next, print "$a,$F[2]" while ($a=$F[0]++) <= $F[1]'

while IFS=, read -r start end str junk; do
   case ${v++} in '' ) v=; continue ;; esac
   seq -f "%g,$str" $start $end
done

while IFS=, read -r start end str junk; do
   case ${v++} in '' ) v=; continue ;; esac
   yes "$str" | sed -e "$start,$end!d;=;${end}q" | sed -e 'N;s/\n/,/'
done

관련 정보