Expandir um intervalo de um arquivo baseado em colunas

0

Eu tenho um arquivo com um número inicial e final, como abaixo

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

No entanto, preciso reescrever isso para que todos os números no intervalo entre o início e o fim sejam escritos com o código deles:

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

Até o último 67883, avb nesse intervalo e continue para

200,add
201,add
202,add 
    
por user216017 30.03.2017 / 13:56

2 respostas

1

Algo como isso deve ser suficiente:

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

Se o seu arquivo tiver um cabeçalho que você não precisa imprimir, então:

awk 'BEGIN{FS=OFS=","}NR>1{for(i=$1;i<=$2;i++) print i,$3}' input_file > output_file
    
por 30.03.2017 / 14:06
0
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
    
por 31.03.2017 / 09:39

Tags