2013-07-17 2 views
1

Ну, я новичок в AWK и у меня есть уравнение ввода так:Awk разбор математического уравнения в переменных

y = 0.02 sin(20πt-0.2πx) 

Из этого уравнения, я хочу:

-копию 0,02 в переменную

-копию в sin в переменной B

-Copy в 20 из 20πt в переменную C

-копию в -0.2 из -0.2πx в D переменной

-И избавиться от всех пробельных

Но я не знаю, как это сделать в AWK, может кто-нибудь помочь мне, пожалуйста? Заранее спасибо

+0

AWK не почтит символ пи как константу. Он будет думать, что это текстовый символ. вы знаете о параметрах позиции в awk? В вашем примере $ 1 = "y", $ 2 = "=" $ 3 = "0.02" $ 4 = ".... остальное его". и изменить 2 доллара на другие числа. Затем вы можете записывать данные типа 'a = $ 3'. Чтобы понять, что я имею в виду, попробуйте awk '{a = $ 3; print $ 2 "\ t" a}' equ.file' Удачи. – shellter

ответ

1

Вы можете начать с выполнения следующих действий и поработать над тем, чтобы покрыть любые кромки. Обратите внимание, что это решение очень хрупкое и не будет работать, если ваш вход изменится.

Рассмотрим это в качестве руководства, чтобы получить к более конкретного решения на основе входных данных

$ echo 'y = 0.02 sin(20pt-0.2px)' | 
awk -F'=' '{split ($2,ary,"[ (t]"); print "a="ary[2]; print "b="ary[3]; print "c="ary[4]+0; print "d="ary[5]+0}' 
a=0.02 
b=sin 
c=20 
d=-0.2 
Смежные вопросы