Você não precisa de um loop. A maioria das ferramentas de processamento de texto aceita vários argumentos, por ex. com sed
:
sed '/From file/{s/.*<\(.*\)>//;h
}
/Ratio of morphemes over utterances/!d
s/.*= //;H;x;s/\n/\t/' ./* > outfile
Isso extrai o nome do arquivo e o salva no buffer de retenção, exclui todas as linhas, exceto aquelas em que extrai a "proporção", que ele anexa ao nome do arquivo, troca buffers e substitui a nova linha por uma guia. Claro, \t
é gnu sed
específico, então substitua-o por uma tabulação literal (no terminal, pressione Ctrl + V então Tab ) se você não está em um gnu
setup. Ainda mais rápido, com qualquer sed
:
sed '/From file/{s/.*<\(.*\)>//;h
}
/Ratio of morphemes over utterances/!d
s/.*= //;H;x' ./* | paste - - > outfile
Se seus arquivos são enormes, você pode querer sair quando estiver na segunda partida (a linha com a "proporção") e ir para o próximo arquivo. É aqui que gawk
nextfile
é útil (acho que é POSIX, mas não tenho certeza de qual awk
flavors o suporta ...):
awk '/From file/{printf("%s\t", substr($3, 2, length($3)-2))}
/Ratio of morphemes over utterances/{print $7; nextfile}' ./* > outfile