Я немного новичок в использовании awk. Моя цель состоит в том, чтобы создать функцию Баша формы:Умножение Awk дает ноль
myfunction file column value
, который принимает данный номер столбца в файле, умножает его значение и перезаписывает файл. На данный момент я написал следующее:
function multiply_column {
file=$1
column=$2
value=$3
awk -F" " '{print $col*mul}' col=$column mul=$value $file
}
Мой файл выглядит следующим образом:
0.400000E+15 0.168933E+00 -0.180294E-44 0.168933E+00
0.401000E+15 0.167689E+00 -0.181383E-44 0.167689E+00
0.402000E+15 0.166502E+00 -0.182475E-44 0.166502E+00
0.403000E+15 0.165371E+00 -0.183569E-44 0.165371E+00
0.404000E+15 0.164298E+00 -0.184666E-44 0.164298E+00
0.405000E+15 0.163284E+00 -0.185766E-44 0.163284E+00
0.406000E+15 0.162328E+00 -0.186868E-44 0.162328E+00
0.407000E+15 0.161431E+00 -0.187972E-44 0.161431E+00
0.408000E+15 0.160593E+00 -0.189080E-44 0.160593E+00
0.409000E+15 0.159816E+00 -0.190189E-44 0.159816E+00
0.410000E+15 0.159099E+00 -0.191302E-44 0.159099E+00
0.411000E+15 0.158442E+00 -0.192416E-44 0.158442E+00
0.412000E+15 0.157847E+00 -0.193534E-44 0.157847E+00
0.413000E+15 0.157312E+00 -0.194653E-44 0.157312E+00
0.414000E+15 0.156840E+00 -0.195775E-44 0.156840E+00
0.415000E+15 0.156429E+00 -0.196899E-44 0.156429E+00
0.416000E+15 0.156081E+00 -0.198026E-44 0.156081E+00
0.417000E+15 0.155796E+00 -0.199154E-44 0.155796E+00
0.418000E+15 0.155573E+00 -0.200285E-44 0.155573E+00
0.419000E+15 0.155413E+00 -0.201418E-44 0.155413E+00
0.420000E+15 0.155318E+00 -0.202554E-44 0.155318E+00
0.421000E+15 0.155285E+00 -0.203691E-44 0.155285E+00
0.422000E+15 0.155318E+00 -0.204831E-44 0.155318E+00
0.423000E+15 0.155414E+00 -0.205973E-44 0.155414E+00
0.424000E+15 0.155575E+00 -0.207116E-44 0.155575E+00
0.425000E+15 0.155802E+00 -0.208262E-44 0.155802E+00
мне удалось просто напечатать первый столбец, но когда я умножить его с моим значением, AWK дает мне 0 Я попробовал свою функцию с другими файлами, где данные были отформатированы по-разному, и она отлично работала. Я также попытался объединить его с bc, без каких-либо успехов.
Кто-нибудь видит, почему в этом случае awk дает 0?
Заранее благодарен!
######### EDITЯ только что узнал, что, если мой файл данных использует запятые и не точки (т.е. 0,400000E + 15 вместо 0.400000E + 15), моя функция работает нормально. Так что-то, где-то, что-то настроено для понимания запятых как разделителя научной нотации вместо точек. Это звонит кому-нибудь?
Хмм, отлично работает для меня ... –
Я забыл упомянуть, что использую Mac OSX. Может ли это быть связано? – Scrimbibete
Как вы называете функцию 'multiply_column' точно? Какие аргументы? – hek2mgl