2016-06-17 8 views
-3

У меня есть следующие данные о температуре, которые нужно манипулировать. Мы подумали об использовании sed, чтобы вставить пространство между данными, но данные постоянно меняются.Вставьте пробел между числами после сопоставления определенного шаблона

76 75 75 77 80 84 87 91 94 97100101101102101 97 92 89 86 84 82 81 79 78 77 

Мне это нужно, чтобы выглядеть следующим образом:

76 75 75 77 80 84 87 91 94 97 100 101 101 102 101 97 92 89 86 84 82 81 79 78 77 

Прямо сейчас, я использую следующий код, чтобы разобрать наибольшее значение (где цифры сгруппированы вместе):

grep -Eo '[0-9]' .../temp.txt | sort -rn | head -n 1 
+4

как вы можете определить, где начинается или заканчивается номер ... – 123

+0

Не могли бы вы уточнить? –

ответ

4

Первое, что нужно сделать, это изменить то, что оно генерирует, чтобы оно выводило его с более широкой шириной поля.

Если это не представляется возможным, то следующий будет де-искажать вывод:

$ sed 's/\([ 1-9][0-9][0-9]\)/ \1/g' data | tr -s ' ' 
76 75 75 77 80 84 87 91 94 97 100 101 101 102 101 97 92 89 86 84 82 81 79 78 77 

Я поставил tr в конце просто удалить последовательные пробельные на выходе из sed (сгенерированного для всех двузначного целые числа, за исключением первого, который в этом случае не соответствует регулярному выражению).

Но на самом деле генератор данных необходимо будет обновить.

+0

это умное использование 'tr -s '''! – fedorqui

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