Eu tenho um arquivo com um grande número de colunas separadas por espaço. Eu quero imprimir colunas específicas com base em determinados critérios numéricos de forma dinâmica. Por exemplo:
]$ cols=$(for i in 'seq 1 3'; do echo -n "\$$[$[i-1]*6+1],\$$[$[i-1]*6+2],\$$[$[i-1]*6+3],\$$[$[i-1]*6+4+66],\$$[$[i-1]*6+5+66],\$$[$[i-1]*6+6+66],"; done)
que me dá as colunas que eu quero imprimir:
]$ echo ${cols%?}
$1,$2,$3,$70,$71,$72,$7,$8,$9,$76,$77,$78,$13,$14,$15,$82,$83,$84
quando eu passo isso para o awk como uma string, eu não entendo o que eu quero:
]$ awk -v cols=${cols%?} '{print cols}' file-testawk | head -2
$1,$2,$3,$70,$71,$72,$7,$8,$9,$76,$77,$78,$13,$14,$15,$82,$83,$84
$1,$2,$3,$70,$71,$72,$7,$8,$9,$76,$77,$78,$13,$14,$15,$82,$83,$84
o awk trata-o como uma string em vez de identificadores de coluna.
Como posso passar uma string de colunas para imprimir no awk de uma maneira que seja corretamente reconhecida? Estou à procura de uma solução simples, mais ou menos de uma linha, por ex. assim:
cols=$(for i in 'seq 1 3'; do echo -n "\$$[$[i-1]*6+1],\$$[$[i-1]*6+2],\$$[$[i-1]*6+3],\$$[$[i-1]*6+4+66],\$$[$[i-1]*6+5+66],\$$[$[i-1]*6+6+66],"; done); awk -v cols=${cols%?} '{print cols}' file-testawk > file.out