Aumenta a eficiência do loop bash com o awk

1

Eu tenho que escrever um arquivo de texto razoavelmente grande (> 300.000 linhas) usando texto extraído da segunda coluna de um arquivo e, em seguida, acrescentar e anexar texto a cada linha e finalmente escrevê-la em um novo arquivo.

Eu tenho o seguinte loop enquanto ele está funcionando bem. Mas é lento, levando muitos minutos por corrida. Eu suspeito que há uma melhor receita / método awk que seria muito mais rápido. Alguém pode sugerir um método mais rápido.

Exemplo de SOURCEFILE

useless9   important1   more useless stuff
useless8   important2   more useless stuff
useless7   important3   more useless stuff
useless6   important4   more useless stuff

Extraia texto do arquivo de origem e envie o arquivo de resultado final.

while read line; do

  mytext='echo $line | awk -v RS='\r\n' '{print $2}''

  echo "$PrePattern $mytext $PostPattern" >> $OUTFILE

done < $SOURCEFILE

OUTFILE

PrePattern text important1 PostPattern text
PrePattern text important2 PostPattern text
PrePattern text important3 PostPattern text
...
    
por Slow Poke 21.01.2016 / 19:57

1 resposta

1

Você precisa estudar mais awk.

awk '{print "prepattern mytext "$2" postpattern";}' <$sourcefile >$outfile
    
por 27.02.2016 / 16:24

Tags