como dividir duas colunas de dois arquivos de texto diferentes no bash

1

Eu tenho dois arquivos de texto, cada um contém uma coluna de números. Como posso dividir esse elemento de elemento de duas colunas e salvar a nova coluna em um novo arquivo de texto? Eu tentei isso, mas não funcionou.

declare -a col1
declare -a col2
col1='awk '{print $1}' File1.txt'
col2='awk '{print $1}' File2.txt'
awk '{print $File1/$File2} > File3.txt
    
por user3708408 30.10.2018 / 03:59

2 respostas

2

Se o que você entende por divisão é a operação de divisão matemática, tente isto:

paste inf1 inf2 | awk '{print($1/$2)}'

Isso pressupõe que inf1 e inf2 sejam dois arquivos com uma coluna de números, algo como:

$ seq 10 30 > inf1
$ seq  2 22 > inf2
$ paste inf1 inf2 | awk '{print($1/$2)}'
5
3.66667
3
2.6
2.33333
2.14286
2
1.88889
1.8
1.72727
1.66667
1.61538
1.57143
1.53333
1.5
1.47059
1.44444
1.42105
1.4
1.38095
1.36364

Se você precisar de um formato específico, use printf em vez de print .

Se deve ser feito em um shell (código bash, pode ser convertido se necessário):

$ readarray -t a <inf1
$ readarray -t b <inf2
$ for ((i=0;i<${#a[@]};i++)); do
      printf '%8.4f\n' "$((10000000*a[i]/b[i]))e-7"
done
  5.0000
  3.6667
  3.0000
  2.6000
  2.3333
  2.1429
  2.0000
  1.8889
  1.8000
  1.7273
  1.6667
  1.6154
  1.5714
  1.5333
  1.5000
  1.4706
  1.4444
  1.4211
  1.4000
  1.3810
  1.3636
    
por 30.10.2018 / 04:14
0

dc é uma boa ferramenta para este trabalho:

dc -f File1.txt -f File2.txt -e '5kzdsa2/sb[la:zla1-dsa0<m]smlmx[la1+ddsa;zrlb+;z/pclbla<n]snlnx' > File3.txt

e com comentários:

dc -f File1.txt -f File2.txt -e '
# set the precision
5k
# keep the number of item in register a and the half in register b
z d sa 2 / sb
# populate indexed register z from z[1] to z[number of item]
[la :z la 1 - d sa 0  <m]sm lmx
# get 2 items from register z and divide them 
[ la 1 + d d sa ;z r lb + ;z / p c lb la <n ]sn lnx' > File3.txt
    
por 30.10.2018 / 12:41