Вам на самом деле не нужно bc
, поскольку в awk есть отличная функция "log":
awk '{for(i=1;i<=NF;i++)print log($i)}' input.txt
Если вы хотите увидеть значения с большей точностью, используйте printf
вместо print,Например:
awk '{for(i=1;i<=NF;i++)printf "%.12f\n",log($i)}' input.txt
Если вы действительно хотите использовать bc
, вы можете сделать это без awk
, изготовив ввод для bc
, например, с помощью команды shell printf
(котораяаналогична команде awk printf, но отличается от нее тем, что команда оболочки повторяет формат до тех пор, пока не закончится аргумент):
printf "l(%s);\n" $(<input.txt) | bc -l
или, если input.txt
имеет многоданные
xargs printf "l(%s);\n" <input.txt | bc -l