2016-11-22 4 views
0

Я пытаюсь перенести данные из Sybase в SQL Server, но обнаружил некоторые неправильные записи.Как исправить диапазон значений поплавка?

Моя запись 2.466987812E-304,2.75859452825E-323,2.4669878237E-314. В этом первом значении правильно, потому что диапазон для float находится между 2.2250738585072014e-308 и 1.797693134862315708e + 308. Но 2-е и 3-е значение неверны.

Как исправить эти значения с помощью sed? Я хочу заменить значение, которое с показателем более 308 должно заменить на 2.2250738585072014e-308.

ответ

0
awk 'BEGIN{RS=ORS=FS=","}{split($0,a,"-");if(a[2]>308) $0="2.2250738585072014e-308"}1' inputfile 

Объяснение: Это разделит весь текст на более мелкие куски, разделенные RS (,). а затем использовать функцию разделения awk для дальнейшего разделения полей на части, разделенные (-). Если значение второй части a [2] больше 308, выполните некоторые действия. «1» означает печать строки.

+0

working ... add extra ',' at end – Pravin

+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based- ответы) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! – kayess

+0

@Pravin вы можете использовать 'awk '...............' | sed 's/\ (. * \),/\ 1 /' ', если вы хотите удалить последнюю запятую. –

Смежные вопросы