Algumas dicas aleatórias, dependendo da formatação real dos dados e outros problemas ...
Como os campos de dados são separados? (Os três primeiros espaçamentos dão a impressão de que há um caractere TAB entre, enquanto as últimas colunas parecem separadas por espaço.) Você deve estar ciente de que as informações da coluna são perdidas para os bicos 4-N se seu separador de campo for definido como padrão . Então a lógica do seu código está seriamente falha.
Se você tiver não separadores TAB, mas todos os espaços em branco você pode usar o recurso awk
do GNU FIELDWIDTHS
para acessar os dados (incluindo os dados "em branco" ausentes, como você parece ser tentando alcançar).
Se você tiver TABs para os três primeiros separadores e espaços em branco para o restante, defina explicitamente FS="\t"
, para que possa trabalhar diretamente nos campos de 1 a 3 e ter o espaçamento intacto nos dados finais (que você pode abordar como um todo como campo 4), o que facilitará a localização de "dados em branco".
Ele pode tornar o processamento mais fácil se você criar subconjuntos de dados em tempo real, operá-los e concatenar os subconjuntos individuais posteriormente. Para separar os dados nos arquivos que estão em, digamos, ano e instrumento , você pode escrever:
awk '{ print > "set_" $1 "_" $3" }' input
e criará arquivos nomeados, por exemplo, set_2015_LEN
ou set_2014_IBM
contendo as respectivas entradas.
A tarefa final para identificar "conjuntos de colunas numéricas correspondentes" depende dos tópicos mencionados anteriormente; se, por exemplo, as oito colunas de dados finais puderem ser endereçadas como uma entidade de comprimento fixo, será suficiente usar o utilitário sort
com uma especificação de chave definida apropriadamente (consulte a opção sort
do -k
).
(BTW: para um teste de índice composto em vez de $1,$2,$3 in arr1
você tem que escrever ($1,$2,$3) in arr1
.)