você pode passar variáveis para awk e seu comando ficaria assim:
awk -v col1=1 -v col2=2 '{ for(i=1; i<=NF;i++) {if (i == $col1 || i == $col2 ) sum+=$i}; print(sum); sum=0 }' $FILE
-
-vvar=valueatribui valor à variável de programa var.
você pode adicionar quantas colunas desejar, basta adicionar -v colx=value e adicionar ot à condição || i == $colx
Se você quiser passar o número de colunas para shell script, você pode adicioná-los em uma matriz digamos columnsArray , então crie uma variável columns=$(echo "${columnsArray[@]}") , então o seu comando deve ficar assim:
awk -v outCols="$columns" 'BEGIN{split(outCols, cols, " ")} { for(i=1; i<=NF;i++) {if (i in cols ) sum+=$i}; print(sum); sum=0 }' $FILE
por exemplo
#!/bin/bash
columns=$(echo "$@")
awk -vcolss="$columns" 'BEGIN{split(colss, cols, " ")}{ for(i=1; i<=NF;i++) {if (i in cols ) sum+=$i}; print(sum); sum=0 }' test
retornaria:
3
3
1