AWK вычесть числовую запись два из записи один - PullRequest
1 голос
/ 24 декабря 2009

Я не могу решить очень простую проблему. Мой файл данных выглядит так:

Crap Crap 0.123456789D+09 Crap Crap
Crap Crap 0.123456798D+09 Crap Crap

Мне нужно использовать AWK, чтобы вычесть число в третьем столбце; вторая строка минус первая строка.

Я пытался:

cat crap.txt | awk '{ A[NR-1] = $3 } END { print A[1] - A[0] }'

безуспешно. Может быть, формат номера неправильный? (Может ли AWK читать научную запись с D вместо E?)

Помощь!

EDIT:

Как известно сообществу, AWK не понимает научную нотацию, в которой вместо E используется D (как и во многих выходах Фортрана). Необходимо заменить D на E и затем выполнить любую математическую операцию.

Ответы [ 2 ]

3 голосов
/ 24 декабря 2009

Вы можете изменить обозначение на лету ...

cat crap.txt | awk '{ sub(/D/,"E",$3); A[NR-1] = $3; } END { print A[1] - A[0] }'
1 голос
/ 24 декабря 2009

awk не может прочитать D-нотацию (что это значит между прочим?). Вот пример:

printf "1.2D+1\n1.2E+1\n12\n" | awk '{ print $1/3; }'
0.4
4
4

Первый неверный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...