У меня 1.0.5. Как я могу увеличить до 1.0.6?Linux: приращение
Пробовал это, но он не работает.
echo 1.0.5 0.0.1 | awk '{sum=$1+$2; printf"%0.2f\n", sum }'
У меня 1.0.5. Как я могу увеличить до 1.0.6?Linux: приращение
Пробовал это, но он не работает.
echo 1.0.5 0.0.1 | awk '{sum=$1+$2; printf"%0.2f\n", sum }'
Как @fpmurphy отметил 1.0.5 в основном строкой, вы не можете разобрать его в виде десятичной дроби.
разделите его, а затем увеличить его следующим образом:
echo 1.0.5 |cut -d'.' -f3 | awk '{sum=$1+1;printf"%s",sum}'
Это увеличивает последнюю часть string.Append его к первой части, чтобы получить желаемый результат.
На самом деле, это просто не выводит «6» (не «1.0.6»)? И если вы добавите «1.0.9», вы получите «10». – abligh
Альтернативное прочтение проблемы в @Ramblers - это увеличивает число, как если бы оно было без точки десятичного:
echo 1.0.5 | perl -pe 's/\.//g;$_++;s/(\d)/$1./g;s/\.$/\n/;'
IE он будет идти
1.0.5 ... 1.0.9 1.1.0 ... 1.9.9 2.0.0 ... 9.9.9 1.0.0.0 1.0.0.1
Давайте разберем, что Perl :
perl -pe ' // Read each line of the input
s/\.//g; // Remove dots
$_++; // Increment number, dropping trailing \n
s/(\d)/$1./g; // Replace each digit by that digit followed by a dot
s/\.$/\n/; // Replace the trailing dot by a trailing \n
' // Output the line (per -p)
Мне это не нравится. Вы переходите от основной версии 9 к основной версии 1? Кто ты, Майкрософт? –
@glennjackman Он идет от основной версии от 9.9 до 1.0.0. Поскольку вопрос был фундаментальным, плохо указанным (см. Мой комментарий по этому вопросу), трудно понять, что это за намерение. – abligh
Вот кусок рубина для добавления каждая часть строки версии:
ruby -e '
version = ARGV.shift.split(".")
increment = ARGV.shift.split(".")
newver = version.zip(increment).map do |ary|
ary.map {|elem| elem.to_i}
.reduce(:+)
end
puts newver.join(".")
' 1.2.3 0.8.8
выходы
1.10.11
Как нечитаемым Oneliner
$ ruby -e 'puts ARGV.shift.split(".").zip(ARGV.shift.split(".")).map {|a| a.map {|e| e.to_i}.reduce(:+)}.join(".")' 1.2.3 0.8.8
1.10.11
Для другого пути, вы могли бы использовать это ...
$ echo 1.0.4 | awk -F '[/.]' '{n=$1$2$3; print n+1}' | fold -w1 | paste -sd.
1.0.5
$ echo 1.0.9 | awk -F '[/.]' '{n=$1$2$3; print n+1}' | fold -w1 | paste -sd.
1.1.0
$ echo 1.9.9 | awk -F '[/.]' '{n=$1$2$3; print n+1}' | fold -w1 | paste -sd.
2.0.0
$ echo 9.9.9 | awk -F '[/.]' '{n=$1$2$3; print n+1}' | fold -w1 | paste -sd.
1.0.0.0
Это не работает хорошо, если версия такова, как показано ниже:
$ echo 9.19.8 | awk -F '[/.]' '{n=$1$2$3; print n+1}' | fold -w1 | paste -sd.
9.1.9.9
Надежда это полезно ..
1.0.5 не десятичное число. 1.05 или 10.5 - десятичные числа. – fpmurphy1
Более того, что бы вы ожидали 1.0.9 + 0.0.1 (1.0.10 или 1.1.0)? Или 5.7.9 + 8.7.6 быть? Или 7.5 + 6.7? – abligh