Ué! Essa me surpreendeu! O meu script carrega o código do paste, do bc, usa o
conceito de substituição de processos e, de quebra, o pipe faz um fork. O teu só carrega o código do awk...
Epa! Acho que acabei de entender o porquê! O cmd system do C chama um shell para interpretar um cmd. Como o k do awk é de Brian Kernighan que trabalhou na Bell Labs junto com Ken Thompson e Dennis Ritchie (cansei de chamar esses 2 para palestrarem na LatinoWare e não consegui. Com a morte do Dennis, desisti) e foi quem escreveu o 1º livro de C (no qual estudei muito) junto com o Dennis. Nunca li o código do awk, mas creio que, devido ao que expliquei, o cmd system das duas linguagens se comportem da mesma forma (devem inclusive ter o mesmo código) e por isso a sua linha de awk ficou pesada (o que não é uma caracteristica do awk, muito pelo contrário).
Em virtude disso, evito usar system em C, priorizando o uso da família popen e pclose, que tb chamam o shell, porém com a opção -c, tornando-o um pouco mais veloz.
Durante a LatinoWare, que será na próxima semana em Foz do Iguaçu, lecionarei uma oficina de Expressões Regulares (entrada grátis). Quem for da lista e estiver no evento, por favor, se apresente. Se não tiver vaga no lab (o que é provável), e quiser fazer o treinamento, fale comigo que damos um jeito.